API 路由测试意外结果
API Route Testing Unexpected Results
我正在写一个 MEAN API,我有一个名为 /authenticate 的路由,用户可以在其中登录。下面我展示了它自己的路由。
// User Login Route - http://localhost:8080/api/authenticate
router.post('/authenticate', function(req, res) {
User.findOne({ username: req.body.username }).select('email username password').exec(function(err, user) {
if (err) throw err;
if (!user) {
res.json({ success: false, message: 'Could not authenticate user.'});
} else if (user) {
//Using comparePassword Method
if (req.body.password) {
var validatePassword = user.comparePassword(req.body.password);
if (!validatePassword) {
res.json({success : false, message : 'Could not authenticate password!'});
}
else{
res.status(200).json({success : true, message : 'User authenticated!'});
}
}
else{
res.json({success : false, message : 'Not password provided!'});
}
}
});
});
我现在正在尝试使用 mocha 和 chai 库测试路由。下面我展示了我用来测试此功能的 describe 块。
describe('POST /authenticate', function() {
it('should return an error', function (done) {
var newUser = {
"username" : "testetet",
"password" : "hgfhghg"
};
chai.request(server)
.post('/api/authenticate')
.send(newUser)
.end(function (err, res) {
expect(res).to.have.status(201);
expect(res.body).to.have.property('message').equal('User Created.');
});
done();
});
});
正如您从上面的测试中看到的那样,测试应该会失败,因为测试中响应标准的 none 匹配应该从 API 返回的响应,但它仍然继续我每次都通过运行它。
有人知道为什么会这样吗?
提前感谢您的帮助。
大家好,发现测试代码中的done()位置不对的问题。它应该类似于下面的代码。
it('should return a user authenticated message', function (done) {
var user = {
"username": "testuser1",
"password": "testPassword1"
};
chai.request(server)
.post('/api/authenticate')
.send(user)
.end(function (err, res) {
expect(res).to.have.status(200);
expect(res.body).to.have.property('message').equal('User Authenticated!');
done();
});
});
我正在写一个 MEAN API,我有一个名为 /authenticate 的路由,用户可以在其中登录。下面我展示了它自己的路由。
// User Login Route - http://localhost:8080/api/authenticate
router.post('/authenticate', function(req, res) {
User.findOne({ username: req.body.username }).select('email username password').exec(function(err, user) {
if (err) throw err;
if (!user) {
res.json({ success: false, message: 'Could not authenticate user.'});
} else if (user) {
//Using comparePassword Method
if (req.body.password) {
var validatePassword = user.comparePassword(req.body.password);
if (!validatePassword) {
res.json({success : false, message : 'Could not authenticate password!'});
}
else{
res.status(200).json({success : true, message : 'User authenticated!'});
}
}
else{
res.json({success : false, message : 'Not password provided!'});
}
}
});
});
我现在正在尝试使用 mocha 和 chai 库测试路由。下面我展示了我用来测试此功能的 describe 块。
describe('POST /authenticate', function() {
it('should return an error', function (done) {
var newUser = {
"username" : "testetet",
"password" : "hgfhghg"
};
chai.request(server)
.post('/api/authenticate')
.send(newUser)
.end(function (err, res) {
expect(res).to.have.status(201);
expect(res.body).to.have.property('message').equal('User Created.');
});
done();
});
});
正如您从上面的测试中看到的那样,测试应该会失败,因为测试中响应标准的 none 匹配应该从 API 返回的响应,但它仍然继续我每次都通过运行它。
有人知道为什么会这样吗? 提前感谢您的帮助。
大家好,发现测试代码中的done()位置不对的问题。它应该类似于下面的代码。
it('should return a user authenticated message', function (done) {
var user = {
"username": "testuser1",
"password": "testPassword1"
};
chai.request(server)
.post('/api/authenticate')
.send(user)
.end(function (err, res) {
expect(res).to.have.status(200);
expect(res.body).to.have.property('message').equal('User Authenticated!');
done();
});
});