M H*_*ari 3 javascript testing unit-testing mocha.js chai
使用 mocha 和 chai forexpressjs 进行重定向测试总是失败“Uncaught AssertionError:预期重定向为 30{1-3} 状态代码,但得到了 200”。下面是测试注册页面。成功注册后,测试代码将重定向到登录页面。所以预期的响应代码是302。但我得到的响应代码是200.
it("Registration Check", done => {
chai
.request(server)
.post("/register")
.send({
name: "pkv",
email: "pkv@pkv.com",
password: "pkv",
cpassword: "pkv"
})
.end((err, res, body) => {
res.should.have.status(302);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
测试中的express js代码如下。注册成功后,响应将重定向到登录页面
if (userInfo.password == userInfo.cpassword) {
if (regexEmail.test(userInfo.email)) {
models.user
.find({
email: userInfo.email
})
.then(user1 => {
if (user1.length) {
res.json({
Err: "Error"
});
console.log("Already Existing user");
} else {
var newuser = new models.user({
name: userInfo.name,
email: userInfo.email,
password: cpass
});
newuser.save(function(err, user) {
if (err) {
console.log("error");
} else {
models.user.find(function(err, response) {
res.redirect("/login");
});
}
});
}
})
.catch(err => {
res.send("Error in database connection");
});
} else {
res.json({
err: "error"
});
}
} else {
res.json({
Response: " Password Mismatch"
});
}
Run Code Online (Sandbox Code Playgroud)
chai-http库自动遵循重定向路径。所以你的测试的响应将是 的响应/login。如果要断言重定向的状态代码,可以使用redirects(0). 例子:
it("Registration Check", done => {
chai
.request(server)
.post("/register")
.send({
name: "pkv",
email: "pkv@pkv.com",
password: "pkv",
cpassword: "pkv"
})
.redirects(0)
.end((err, res, body) => {
res.should.have.status(302);
done();
});
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2159 次 |
| 最近记录: |