我正在運行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發送哪條消息?這應該有助於確定代碼中的哪一部分出錯。 –