Документы энзимов для полного DOM Rendering here содержит следующий пример шпионить метода жизненного цикла с Синоном:Как высмеять метод жизненного цикла компонента React с помощью Jest and Enzyme?
describe('<Foo />',() => {
it('calls componentDidMount',() => {
sinon.spy(Foo.prototype, 'componentDidMount');
const wrapper = mount(<Foo />);
expect(Foo.prototype.componentDidMount.calledOnce).to.equal(true);
});
});
Что является эквивалент этого с помощью фиктивных функций из Шутки?
Я использую Create-React-App, и не хотел бы включать Sinon, если то же самое можно достичь с помощью Jest.
Вот что я ожидал бы испытание выглядеть следующим образом:
describe('<App />',() => {
it('calls componentDidMount',() => {
jest.fn(App.prototype, 'componentDidMount');
const wrapper = mount(<App />);
expect(App.prototype.componentDidMount.mock.calls.length).toBe(1);
});
});
В этом случае App.prototype.componentDidMount
не ссылается на тот же функцию шпиона, как это будет делать с Синоном.
Документы Jest о том, как макетные функции фактически работают, немного ограничены. Я наблюдал за обсуждением here вокруг того, что делает jest.fn(), но, похоже, это не эквивалентно синону.().
Как я могу повторить этот тест с помощью Jest?
Вы пытаетесь проверить, вызван ли метод жизненного цикла React? Почему вы хотите это сделать? Это должно быть тестовым примером для самого Реагента. Вы должны попытаться проверить функциональность, с которой вы звоните, в рамках метода жизненного цикла. Этот тест не добавит никакой ценности вашему приложению. –