Trying to test React component, using Karma+Jasmine,
I'm trying to check that all function into onClick
handler is invoked, but the test return false result:
`Expected spy reportLoginWithEmail to have been called.`
Here is my component:
<a className="sign-in-with-email" onClick={this.signInWithEmail}>
Or Sign in with your Email
</a>
signInWithEmail handler:
signInWithEmail = (event) => {
event.preventDefault();
this.setState({
isEmailSignIn: true
});
biActions.reportLoginWithEmail();
};
Test:
describe('SignIn', () => {
let component, biActions;
beforeEach(() => {
component = TestUtils.renderIntoDocument(<SignIn/>);
biActions = require('../../../actions/BIActions');
spyOn(biActions, 'reportLoginWithEmail');
});
it('test clicking on login by email call function', () => {
let signInEmail = TestUtils.findRenderedDOMComponentWithClass(component, 'sign-in-with-email');
TestUtils.Simulate.click(signInEmail);
expect(biActions.reportLoginWithEmail).toHaveBeenCalled();
});
});
On another side the test of state
change return true
:
it('test clicking on login by email change state', () => {
let signInEmail = TestUtils.findRenderedDOMComponentWithClass(component, 'sign-in-with-email');
TestUtils.Simulate.click(signInEmail);
expect(component.state.isEmailSignIn).toBe(true);
});
What am I missing, any suggestions?