下面是我的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();
Mocha 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测试了上面的路线并且它按预期工作,同样它从浏览器表单帖子中按预期工作,我不知道为什么mocha失败了? 有人可以在我做错的地方抛光,以解决这个问题。
此致
答案 0 :(得分:0)
您可能以错误的方式发送数据。试试这个
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);
});