로그인 컨트롤러에 대한 테스트를 실행 중이며 프로그래밍 된대로 상태 코드가 200이 아닌 잘못된 상태 (401)를 유지합니다. 주어진 입력이 맞으면 사용자가 등록하고 반환 할 때 저장된 데이터를 사용할 것으로 기대합니다. 우편 배달부에서 완벽하게 작동하지만 테스트를 작성하는 중에 401 오류가 발생합니다. 이 오류 난입니다Javascript - 테스트 중에 잘못된 상태 코드 제공
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)})
},
:
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()
});
});
이것은 로그인 내 컨트롤러 : 그것은이의 기호에 대한 테스트 블록 사용자
를 찾을 수없는 것과 같다 얻으십시오 :
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과 함께 보내는 메시지는 무엇입니까? 그러면 코드의 어느 부분이 잘못 될지 알 수 있습니다. –