#typescript #unit-testing #mocking #ts-jest
#typescript #модульное тестирование #издевательство #ts-jest
Вопрос:
У меня есть код, в котором я получаю объект от стороннего компонента, поэтому я пометил его тип как any
. Есть несколько методов этого объекта, которые я использую в своем коде.
init(context: any) {
context.doSomething('profile');
}
Теперь, тестируя этот код, я хочу поиздеваться над функциональностью doSomething
метода, но я не уверен, как я могу это сделать. Я попробовал несколько вещей в jest.fn(), но, похоже, ничего не работает. Я попробовал что-то вроде
type ContextType = { doSomething?: (arg0: { val: string; }) => any; }
let context: ContextType = {};
jest.spyOn(context, 'doSomething').mockReturnValue({});
obj.init(context);
Но, похоже, это не работает. Но может кто-нибудь сказать мне, как я могу заставить это работать в моих тестах?
Ответ №1:
Создайте a context
, который включает doSomething
в себя как макет функции.
let context = { doSomething: jest.fn() };
obj.init(context);
expect(context.doSomething).toHaveBeenCalledWith('profile');