#node.js #mongoose #jestjs #mongoose-schema
#node.js #мангуст #jestjs #мангуст-схема
Вопрос:
Я пишу модульный тестовый пример (jest) для метода, который возвращает анонимную функцию. для функции мне нужно передать имя объекта, а для анонимной функции он принимает this(ответ мангуста) и next(экспресс) в качестве аргументов. как издеваться или передавать значение этому при вызове метода validate?
Метод
validatesss(entityName: string) {
return async function (this: any, next: HookNextFunction) {
const sequence = await metadataModel.getIncrementedSequence(entityName);
this.set({ [entityName '_no']: sequence });
next();
};
}
Ответ №1:
this
может быть предоставлен функции с call
помощью или apply
:
let next = jest.fn();
let set = jest.fn();
let fn = obj.validatesss('foo');
expect(fn).toEqual(expect.any(Function));
await fn.call({ set }, next);
expect(set).toBeCalledWith({ foo_no: ... });
expect(next).toBeCalledWith();