У меня есть компонент контейнера, ответственный за предоставление функциональных возможностей сохранения для компонента компонента дочерней формы. Я пытаюсь использовать Jest & Enzyme (мне кажется, мне нужен фермент?), Чтобы проверить, запускает ли дочерний компонент функцию, переданную из родительского компонента. Эти два метода выглядеть так:Использование Jest для тестирования метода компонента React
class Parent extends Component {
handleSave = (someData) => (
/* do some ajax with someData */
)
render() {
return(
<ChildComponent {...this.props} handleSave={this.handleSave} />
)
}
}
class ChildComponent extends Component {
render() {
<form onSubmit={this.props.handleSave}>
<button type="submit">Submit</button>
</form>
}
}
И тест:
import React from 'react'
import ParentContainer from '../src/ParentContainer'
describe('<ParentContainer />',() => {
it('Should fire handle save when PatientScheduler form saves',() => {
const component = mount(<ParentContainer />)
component.handleSave = jest.fn()
component.find('[type="submit"]').simulate('click')
expect(component.handleSave).toHaveBeenCalled()
})
})
Сообщение отказ я получаю Expected mock function to have been called.
Я чувствую, что я на 90% оттуда. Что здесь не так? Спасибо.
ОК, это решает проблему представления (спасибо), но я все еще не уверен, как шпионить мой метод handleSave правильно. –
Есть некоторые недостатки в тестировании в основном этой строки 'component.handleSave = jest.fn()'. Вы не должны проверять свое внутреннее поведение, но на внешний материал. В вашем случае я предполагаю, что вы будете использовать некоторый импортированный модуль, который выполняет фактический запрос. Вы должны издеваться над этим. –