Для тестирования я использую jest и react-test-renderer. Это должно быть просто проверить, однако мне сложно найти подходящий пример. Я пробовал сделать что-то подобное (вообще я храню функции в отдельных файлах):
utils.js
export const childFunction = () => 'something';
const parentFunction = () => childFunction();
export default parentFunction;
utils.test.js
import parentFunction from './utils.js';
it('childFunction should be called', () => {
const childFunction = jest.fn();
parentFunction();
expect(childFunction).toBeCalled();
})
Фрагмент const childFunction = jest.fn (); определенно не будет работать. При вызове тело parentFunction заботится только о своей собственной области видимости. Но это также не сработает, если я импортирую childFunction и выполняю jest.mock (childFunction), потому что jest.mock нужна строка, URL-адрес модуля, а не сама функция.
Приведенный выше пример не работает, и я ищу альтернативу. Однако это работает после рендеринга компонента с помощью ShallowRenderer. И я хотел бы добиться аналогичного поведения с функцией, вложенной в другую функцию.
class Component extends React.Component {
componentDidMount() {parentFunction()}
render() {...}
}
const renderer = new ShallowRenderer();
describe("testing parentFunction", () => {
renderer.render(<Component/>);
it("parentFunction should be called", () => {
expect(parentFunction).toBeCalled();
});
});