Я новичок в Enzyme как тестовый пакет для моего проекта ReactJS.Я написал этот тест для компонента класса:
test.js:
import expect from 'expect';
import React from 'react';
import sinon from 'sinon'
import {mount, shallow} from 'enzyme';
import TestUtils from 'react-addons-test-utils';
import PageToBeTested from './PageToBeTested';
describe('Testing PageToBeTested via Enzyme', () => {
it('onChangeMethod is called when a field is updated', () => {
const event = {value: {"siteCode": 123}}
const wrapper = mount(<PageToBeTested />);
const handleOnChangeMethodSpy = sinon.spy(wrapper.instance(),
"onChangeMethod ");
wrapper.update(); // Force re-render
wrapper.find('SelectInput').at(0).simulate("change", event);
expect(handleOnChangeMethodSpy.calledOnce).toEqual(true);
});
});
Я получаю следующее сообщение:
Testing PageToBeTested via Enzyme
onChangeMethod is called when a field is updated:
Error: Expected false to equal true
+ expected - actual
-false
+true
Вот как выглядит мой PageToBeTestedкак:
// Shortened for simplicity
onChangeMethod(event) {
const region = event.value;
this.setState({
region: region
});
methodA(region).then(response => {
this.setState({
someList: methodB(response.data.sites)
});
});
}
return (
<Container fluid>
<Row>
<ConnectedComponent
onChangeMethod={this.onChangeMethod} />
</Row>
{ChildComponent}
</Container>
);
Я следовал этому ответу stackoverflow здесь и я ожидал, что onChangeMethod будет вызван, но из-за ошибки кажется, что он вообще не стимулируется.
SelectInput является дочерним компонентом ConnectedComponent.
Могу ли я знать, что происходит в этом случае под капотом?
Спасибо.