reactjs - 如何使用 jest/enzyme 测试反应类之外的验证功能
问题描述
我正在尝试测试一个用于验证 from 中的空字段的函数。此函数保留在主反应类(即 LOGIN)之外,并在输入表单字段中使用 prop验证调用。
在酶/开玩笑测试中,我想为我的输入字段设置一个空值,以检查是否至少调用了一次所需的函数。
if (!value) {
return (
<div className="alert alert-danger" role="alert">
This field is required!
</div>
);
}
};
这是我要测试的功能。
这是在Input validations={required}中调用它的函数下方的主类
constructor(props) {
super(props);
this.handleLogin = this.handleLogin.bind(this);
this.onChangeUsername = this.onChangeUsername.bind(this);
this.onChangePassword = this.onChangePassword.bind(this);
this.state = {
username: "",
password: "",
islogin:false,
loading: false,
message: ""
};
}
onChangeUsername(e) {
this.setState({
username: e.target.value
});
}
onChangePassword(e) {
this.setState({
password: e.target.value
});
}
handleLogin(e) {
e.preventDefault();
this.setState({
message: "",
loading: true
});
this.form.validateAll();
if (this.checkBtn.context._errors.length === 0) {
AuthService.login(this.state.username, this.state.password).then(
() => {
this.setState({
islogin: true
});
this.props.history.push("/profile");
window.location.reload();
},
error => {
const resMessage =
(error.response &&
error.response.data &&
error.response.data.message) ||
error.message ||
error.toString();
this.setState({
loading: false,
message: resMessage
});
}
);
} else {
this.setState({
loading: false
});
}
}
render() {
return (
<div className="col-md-12">
<div className="card card-container">
<img
src="//ssl.gstatic.com/accounts/ui/avatar_2x.png"
alt="profile-img"
className="profile-img-card"
/>
<Form
onSubmit={this.handleLogin}
ref={c => {
this.form = c;
}}
>
<div className="form-group">
<label htmlFor="username">Username</label>
<Input
type="text"
className="form-control"
name="username"
value={this.state.username}
onChange={this.onChangeUsername}
validations={[required]}
/>
</div>
<div className="form-group">
<label htmlFor="password">Password</label>
<Input
type="password"
className="form-control"
name="password"
value={this.state.password}
onChange={this.onChangePassword}
validations={[required]}
/>
</div>
<div className="form-group">
<button
className="btn btn-primary btn-block"
disabled={this.state.loading}
>
{this.state.loading && (
<span className="spinner-border spinner-border-sm"></span>
)}
<span>Login</span>
</button>
</div>
{this.state.message && (
<div className="form-group">
<div className="alert alert-danger" role="alert">
{this.state.message}
</div>
</div>
)}
<CheckButton
style={{ display: "none" }}
ref={c => {
this.checkBtn = c;
}}
/>
</Form>
</div>
</div>
);
}
}
对此有什么帮助吗?我一直被困在这里。
解决方案
推荐阅读
- c# - Identity Server 4 - API 在部署到服务器时返回 401 Unauthorized
- python - 在python中使用变量的Mysql Update语句
- c# - 具有多个部分的 C# xml 到字典转换
- r - 如何从 zip 读取多个 csv 文件并导入 R 中的不同数据帧?
- ios - 适用于 iOS 的 HERE SDK - 切换服务器环境
- javascript - 我如何限制数组只存储 3 个对象?
- python - pandas 函数 isin 不适用于 def 方法中的数据框
- ansible - 在ansible中从寄存器创建变量
- c# - 用于侧载 UWP 应用的 Windows 10 反馈中心
- python - 调用 tensorflow freeze_graph 时出现“IndexError: list index out of range”错误