Nodejs / Express API简单的Mocha / Chaitesting

我正在尝试为我的API构build一个testing集,这个testing集是用nodejs / express和mocha / chai开发的。 基本上,索引返回一个简单的string,我知道它的工作原理,因为我可以在我的浏览器上看到:

router.get('/', function(req, res, next) { res.send('Hello World from Eclipse'); }); 

然后我按照这个教程来构build这个testing:

 var supertest = require("supertest"); var should = require("should"); // This agent refers to PORT where program is runninng. var server = supertest.agent("http://localhost:5000"); // UNIT test begin describe("SAMPLE unit test",function(){ // #1 should return home page it("should return home page",function(done){ // calling home page api server .get("/") .expect("Content-type",/json/) .expect(200) // THis is HTTP response .end(function(err,res){ // HTTP status should be 200 res.status.should.equal(200); // Error key should be false. res.body.error.should.equal(false); done(); }); }); }); 

我可以看到我的服务器的日志中,地址被调用,但是,testing总是说,它不能读取属性'应该'的未定义,在我有'res.status.should.equal(200) ;”。 可能是因为'res'是未定义的。 换句话说,API没有答案。

我在这里错过了什么? 我没有参数运行摩卡…

尝试这样的事情:

 var expect = require('chai').expect; var request = require('supertest'); var uri = 'your url'; describe('Profile',function(){ it('Should return a users profile',function(done){ request .get(uri + '/api/1.0/profile') .query({app_id:'12345'}) .end(function(err,res){ var body = res.body; expect(body.first_name).to.equal('Bob'); expect(body.last_name).to.equal('Smith'); done() }); }); }); 

确保你有正确的要求包括在内。

您应该检查.end()错误:

 .end(function(err, res) { if (err) return done(err); ... }); 

testing用例期望的内容types匹配/json/ ,而不是,所以它应该被设置(和res将是不确定的,因为这一点)。