Проблема
Я кодирую модульные тесты с Jest в приложении реагирования и хочу проверить, правильно ли функция выполняет свою (вложенную) работу.
Функция возвращает объект с тремя свойствами.Каждое свойство равно анонимной функции, которая возвращает определенную функцию.Я не могу найти, как проверить конкретную функцию и переданные ей параметры.
Так выглядит вся функция
const myFunction = (param) => {
return {
prop1: (value) => {
return specificFunction(param.someProp1, value);
},
prop2: (value) => {
return specificFunction(param.someProp2, value);
},
prop3: (value) => {
return specificFunction(param.someProp3, value, true);
},
};
};
Я хочу проверить return specificFunction…
строки
Фактическое состояние
После прочтения документов JestJS я попробовал решение, которое работает, но без контроля переданных параметров конкретной функции.
describe('myFunction', () => {
it('should returns object with 3 properties that have an anonymous'
+ 'function that returns a specificFunction with specific parameters'
+ 'passed in', () => {
expect(
myFunction({
someProp1: 'a',
someProp2: 'b',
someProp3: 'c',
}),
).toEqual({
prop1: expect.any(Function),
prop2: expect.any(Function),
prop3: expect.any(Function),
});
});
});
Тест проходит, но без контроля
Ожидаемый результат
Я хочу, чтобы мой тест проверял, вызывает ли myFunction сначала определенную вложенную функцию, а также вызывает ее с конкретными параметрамикак
describe('myFunction', () => {
it("should do the job (I don't want to write the whole (long) description)", () => {
expect(
myFunction({
someProp1: 'a',
someProp2: 'b',
someProp3: 'c',
}),
).toEqual({
prop1: // Check if specificFunction is returned from the anonymous function
//and that the first parameter is 'a' and the second is the parameter from anonymous function
prop2: // Check if specificFunction is returned from the anonymous function
// and that the first parameter is 'b' and the second is the parameter from anonymous function
prop3: // Check if specificFunction is returned from the anonymous function
// and that the first parameter is 'a', the second is the parameter from anonymous function
// and the third parameter is a boolean set to true
});
});
});
Я не знаю, пытаюсь ли я решить проблему правильным способом.Я открыт для любых предложений, но не могу изменить логику с начальной функции myFunction