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);       
   });