Я пытаюсь проверить, что метод formIsValid
в моем компоненте InformationGatheringFormContainer
вызывает один из компонентов (isInfoFormValid
), когда он выполняет:
export class InformationGatheringFormContainer extends React.Component{
...
formIsValid() {
this.props.isInfoFormValid(this.state.invalid);
}
Для этого яЯ использую шпионскую функцию sinon:
it('formIsValid changes the state', () => {
const mockFunction = sinon.spy();
const baseProps = {
isInfoFormValid: mockFunction,
}
const wrapper = shallow(<InformationGatheringFormContainer {...baseProps} />);
wrapper.instance().formIsValid();
expect(mockFunction).to.have.been.calledOnce.equal(true);
})
Я ожидаю, что это сработает, однако этот тест дает:
AssertionError: expect(received).to.equal(expected)
Expected value to equal:
true
Received:
[Function proxy]
Difference:
Comparing two different types of values. Expected boolean but received function.
Таким образом, вызов функции действительно обнаружен, но .to.have.been.calledOnce
ферментативный метод не возвращает логическое значение здесь, по-видимому.
Я новичок в юнит-тестах Reactjs, и я немного растерялся.Как возврат .to.have.been.calledOnce
может иметь тип, отличный от логического?
Заранее благодарю за помощь