Reactjs 如何用酶和摩卡测试内存器中安装的元件的错误状态
我想用酶挂载测试React组件的错误状态。即使设置了状态,也不会显示错误 这是React组件的渲染方法Reactjs 如何用酶和摩卡测试内存器中安装的元件的错误状态,reactjs,meteor,react-router,mocha.js,enzyme,Reactjs,Meteor,React Router,Mocha.js,Enzyme,我想用酶挂载测试React组件的错误状态。即使设置了状态,也不会显示错误 这是React组件的渲染方法 render() { return ( <div> <div> <h1>Signup</h1> {this.state.error ? <p>{this.state.error}</p> : undefined} &l
render() {
return (
<div>
<div>
<h1>Signup</h1>
{this.state.error ? <p>{this.state.error}</p> : undefined}
<form onSubmit={this.onSubmit}>
<input type="text" ref="username" name="username" placeholder="Username"/>
<input type="email" ref="email" name="email" placeholder="Email"/>
<input type="password" ref="password" name="password" placeholder="Password"/>
<button>Create Account</button>
</form>
<p><Link to="/login">Already have an account?</Link></p>
</div>
</div>
)
}
render(){
返回(
报名
{this.state.error?{this.state.error}:未定义}
创建帐户
已经有账户了吗
)
}
这是用摩卡咖啡和酶做的测试
it('should show error message', function () {
const error = 'This is not working'
const spy2 = expect.createSpy()
const wrapper2 = Enzyme.mount(
<MemoryRouter>
<Signup
createUser={spy2}
/>
</MemoryRouter>
)
// Access Signup Component inside Memory Router
const component = wrapper2.find(Signup)
component.setState({error})
expect(component.find('p').first().text()).toBe(error)
})
it('应显示错误消息',函数(){
常量错误='这不起作用'
const spy2=expect.createSpy()
const wrapper2=Enzyme.mount(
)
//内存路由器内部的访问注册组件
const component=wrapper2.find(注册)
组件.setState({error})
expect(component.find('p').first().text()).toBe(错误)
})
我希望错误段落的文本与设置错误状态消息匹配我不确定从
setState
到render
到更新虚拟DOM的转换是阻塞还是非阻塞。如果它是非阻塞的,那么您可能调用expect
只是“太早”,组件被标记为脏组件,可能还没有渲染,或者DOM还没有更新?也许有帮助?如果您在几毫秒后使用setTimeout
调用expect
,它会工作吗?我不确定从setState
到render
到更新虚拟DOM的转换是阻塞还是非阻塞。如果它是非阻塞的,那么您可能调用expect
只是“太早”,组件被标记为脏组件,可能还没有渲染,或者DOM还没有更新?也许有帮助?如果使用setTimeout
在几毫秒后调用expect
,它会工作吗?