Leo*_*ban 7 javascript testing reactjs jestjs enzyme
我正在编写一个测试来检查如果提交的登录表单没有数据,是否显示错误通知组件.
describe('User signin', () => {
it('should fail if no credentials are provided', () => {
const loginComponent = shallow(<Login />);
expect(loginComponent.find('.form-login').length).toBe(1);
loginComponent.find('.form-login').simulate('submit');
expect(loginComponent.find(Notification).length).toBe(1);
});
});
Run Code Online (Sandbox Code Playgroud)
看起来它.simulate正在测试到达我的handleSubmit函数,但是我在测试中遇到了这个错误:
TypeError:无法读取undefined的属性'preventDefault'
handleSubmit(e) {
e.preventDefault(); // <-- problem here
const user = this.state.username;
const pass = this.state.password;
const gotoDashboard = () => this.props.history.push('/dashboard');
const postLogin = (user, pass) => {
api.userLogin(user, pass)
Run Code Online (Sandbox Code Playgroud)
如果我删除该e.preventDefault();行,我的测试将会过去,但是我需要该行以防止默认的表单提交事件.
Leo*_*ban 10
快速计算出来...我只需要使用假的preventDefault函数创建一个fakeEvent并传递它:
describe('User signin', () => {
it('should fail if no credentials are provided', () => {
const fakeEvent = { preventDefault: () => console.log('preventDefault') };
const loginComponent = shallow(<Login />);
expect(loginComponent.find('.form-login').length).toBe(1);
loginComponent.find('.form-login').simulate('submit', fakeEvent);
expect(loginComponent.find(Notification).length).toBe(1);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9761 次 |
| 最近记录: |