我正在运行Signin控制器测试,它会一直给出错误的状态代码(401),而不是200,因为我将它编程为。 我希望它使用用户注册时存储的数据,并在给定输入正确的情况下将其返回。 它在邮递员完美的作品,但因为我正在写测试,它会引发401错误。 它就像它没有找到用户Javascript - 在测试期间给出错误的状态代码
这是试块为标志的:
it('it should signin a new user', (done) => {
request(app)
.post('/api/users/signin')
.send({
username: "Charles",
password: "challenger",
})
.expect(200)
.end((err, res) => {
if (err) {
return done(err);
}
done()
});
});
这是在我的日志记录控制器:
signin(req, res) {
const username = req.body.username.toLowerCase().trim();
// const email = req.body.email.trim();
if(!username) {
return res.status(401)
.send(
{status: false,
message: "Username cannot be empty"
});
}
else if (!req.body.password) {
return res.status(401)
.send({
status: false,
message: "Password field cannot be empty"
});
}
return User.findOne({
where: {
username,
}
})
.then((user) =>{
if(!user) {
return res.status(401).send({message: "User is not registered"})
}
else if(!user.validPassword(req.body.password)){
return res.status(401)
.send({
message: "The password is incorrect"
})
}
const token = user.generateAuthToken();
res.header('x-auth', token).status(200).send({
statusCode: 200,
message: `Welcome back, ${user.username}`,
user
});
})
.catch(error => {return res.status(400).send(error)})
},
这是错误我得到:
1) Testing API routes POST /api/users/ it should signin a new user:
Error: expected 200 "OK", got 401 "Unauthorized"
at Test._assertStatus (node_modules\supertest\lib\test.js:266:12)
at Test._assertFunction (node_modules\supertest\lib\test.js:281:11)
at Test.assert (node_modules\supertest\lib\test.js:171:18)
at Server.assert (node_modules\supertest\lib\test.js:131:12)
at emitCloseNT (net.js:1552:8)
at _combinedTickCallback (internal/process/next_tick.js:77:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
400是由最后then()子句中某处的javascript错误引起的。尝试在最后的catch块中输出“error”的值,它会告诉你什么失败了。 –
@DuncanThacker对不起,它给出了401错误,而不是400错误。用户可以很好地登录邮递员,但我的测试仍然失败。如果没有用户发生错误 – letmebe
它向401发送哪条消息?这应该有助于确定代码中的哪一部分出错。 –