【发布时间】:2019-07-22 11:54:59
【问题描述】:
我是单元测试的新手,我遇到了这个案例。 我正在使用 JEST 和 Enzyme - REACT JS
我熟悉调用 clicks 和 onChange 事件,但不知道如何设置以下测试:
updateUser = (e) => {
var tempUser = this.state.user;
switch(e.target.id){
case "firstName":
tempUser.FirstName = e.target.value;
break;
case "lastName":
tempUser.LastName = e.target.value;
break;
case "email":
tempUser.Email = e.target.value;
break;
case "userName":
tempUser.Username = e.target.value;
break;
default:
break;
}
this.setState({
user: tempUser,
})
}
所以我尝试应用我用来测试 updateUser 的相同设置 - 不确定它是否正确。
describe(' Test', () => {
let wrapper;
beforeEach(() => wrapper = shallow(<Component {...baseProps} />));
it('UpdateUser method', () => {
wrapper.instance().updateUser = jest.fn();
wrapper.setState({
user:{
tempUser :{
FirstName: "",
LastName:"",
Email:"",
Username:"",
},
},
}),
wrapper.update();
expect(wrapper.instance().updateUser).toBeDefined();
expect(wrapper.state().user).toEqual({});
})
感谢您的帮助 - 希望学习如何测试 switch 案例并通过此测试。
【问题讨论】:
-
@skyboyer 有什么建议吗?根据我的回答解决问题
-
总的来说,我的建议是:通过
props调用updateUser并验证render()相应地更改了组件。突变状态会使您的组件不稳定,而直接在测试中访问状态会使测试更难维护。我不会那样做。要显示一些代码,我至少需要了解updateUser如何绑定到元素以及如何呈现您的组件。 -
我应该在代码框内添加代码和测试代码
标签: javascript reactjs unit-testing jestjs enzyme