mocha 测试失败 express REST API
mocha test fails express REST API
下面是我的 Accounts.js 模块。
var Accounts = function(){
return{
registerNewUser : function(req,res){
console.log(req.body);
var email = req.body.email;
var password = req.body.password;
if(email === undefined || password === undefined){
res.status(400).end('Required Fields Missing');
}
else{
email = email.trim();
password = password.trim();
console.log('lengths = ', email.length, ' password length = ', password.length);
if(email.length <= 0 || password.length <= 0){
res.status(400).end('Bad Request');
}
else{
res.status(200).end('ok');
}
}
}
}
}
module.exports = new Accounts();
摩卡UnitTests.js
var request = require('supertest');
var app = require('../express-app');
describe('Testing Route to Register New User', function(){
var server;
beforeEach(function(){
server = app.startServer();
});
afterEach(function(done){
server.close();
done();
});
it('Missing required fields test', function(done){
request(app).post('/register',{
}).expect(400).end(done);
}) ;
it('Empty field test',function(done){
request(app).post('/register',{
email:"",
password:" "
}).expect(400).end(done);
});
it('Should accept the correct email and password',function(done){
request(app).post('/register',{
email:"email",
password:"alskdjfs"
}).expect(200).end(done);
});
});
摩卡输出:
Testing Route to Register New User
API Server listening on port 3000
{}
✓ Missing required fields test
API Server listening on port 3000
{}
✓ Empty field test
API Server listening on port 3000
{}
1) Should accept the correct email and password
2 passing (65ms)
1 failing
1) Testing Route to Register New User Should accept the correct email and password:
Error: expected 200 "OK", got 400 "Bad Request"
at Test._assertStatus (node_modules/supertest/lib/test.js:232:12)
at Test._assertFunction (node_modules/supertest/lib/test.js:247:11)
at Test.assert (node_modules/supertest/lib/test.js:148:18)
at Server.assert (node_modules/supertest/lib/test.js:127:12)
at emitCloseNT (net.js:1521:8)
我已经使用 curl cli 测试了上述路由,它按预期工作,同样它按浏览器表单的预期工作 post,我不知道为什么 mocha 失败了?
有人可以指出我做错的地方来解决这个问题吗?
此致
您发送数据的方式可能有误。试试这个
it('Should accept the correct email and password',function(done){
var data = {
email:"email",
password:"alskdjfs"
};
request(app).post('/register').send(data).expect(200).end(done);
});
下面是我的 Accounts.js 模块。
var Accounts = function(){
return{
registerNewUser : function(req,res){
console.log(req.body);
var email = req.body.email;
var password = req.body.password;
if(email === undefined || password === undefined){
res.status(400).end('Required Fields Missing');
}
else{
email = email.trim();
password = password.trim();
console.log('lengths = ', email.length, ' password length = ', password.length);
if(email.length <= 0 || password.length <= 0){
res.status(400).end('Bad Request');
}
else{
res.status(200).end('ok');
}
}
}
}
}
module.exports = new Accounts();
摩卡UnitTests.js
var request = require('supertest');
var app = require('../express-app');
describe('Testing Route to Register New User', function(){
var server;
beforeEach(function(){
server = app.startServer();
});
afterEach(function(done){
server.close();
done();
});
it('Missing required fields test', function(done){
request(app).post('/register',{
}).expect(400).end(done);
}) ;
it('Empty field test',function(done){
request(app).post('/register',{
email:"",
password:" "
}).expect(400).end(done);
});
it('Should accept the correct email and password',function(done){
request(app).post('/register',{
email:"email",
password:"alskdjfs"
}).expect(200).end(done);
});
});
摩卡输出:
Testing Route to Register New User
API Server listening on port 3000
{}
✓ Missing required fields test
API Server listening on port 3000
{}
✓ Empty field test
API Server listening on port 3000
{}
1) Should accept the correct email and password
2 passing (65ms)
1 failing
1) Testing Route to Register New User Should accept the correct email and password:
Error: expected 200 "OK", got 400 "Bad Request"
at Test._assertStatus (node_modules/supertest/lib/test.js:232:12)
at Test._assertFunction (node_modules/supertest/lib/test.js:247:11)
at Test.assert (node_modules/supertest/lib/test.js:148:18)
at Server.assert (node_modules/supertest/lib/test.js:127:12)
at emitCloseNT (net.js:1521:8)
我已经使用 curl cli 测试了上述路由,它按预期工作,同样它按浏览器表单的预期工作 post,我不知道为什么 mocha 失败了? 有人可以指出我做错的地方来解决这个问题吗?
此致
您发送数据的方式可能有误。试试这个
it('Should accept the correct email and password',function(done){
var data = {
email:"email",
password:"alskdjfs"
};
request(app).post('/register').send(data).expect(200).end(done);
});