2015-05-01 36 views
7

学习TDD和我的“Hello World”服务器响应的第一个简单测试在Mocha中失败。我正在使用Mocha.js,Superagent,& Expect.js。摩卡测试:未捕获TypeError:无法读取null的属性'状态'

当我curl -i localhost:8080,我得到正确的响应和状态代码。

HTTP/1.1 200 OK 
Content-Type: text/plain 
Date: Mon, 27 Apr 2015 17:55:36 GMT 
Connection: keep-alive 
Transfer-Encoding: chunked 

Hello World 

测试代码:

var request = require('superagent'); 
var expect = require('expect.js'); 

// Test structure 
describe('Suite one', function(){ 
    it("should get a response that contains World",function(done){ 
     request.get('localhost:8080').end(function(res){ 
      // TODO check that response is okay 
      expect(res).to.exist; 
      expect(res.status).to.equal(200); 
      expect(res.body).to.contain('World'); 
      done(); 
     }); 
    }); 
}); 

Server代码:

var server = require('http').createServer(function(req, res){ 
    res.writeHead(200, {"Content-Type":"text/plain"}); 
    res.end('Hello World\n'); 
}); 

server.listen(8080, function(){ 
    console.log("Server listening at port 8080"); 
}); 

摩卡输出:

Suite one 
    1) should get a response that contains World 


    0 passing (110ms) 
    1 failing 

    1) Suite one should get a response that contains World: 
    Uncaught TypeError: Cannot read property 'status' of null 
     at test.js:10:23 
     at _stream_readable.js:908:16 

我试着用搜索引擎这个问题,但没有运气找到了什么我做错了。

+0

是否有人注意到期待()to.equal不工作了???而图书馆的作者没有提到这个垃圾?顺便说一句,它从“.to.equal”改为“toEqual”。我很惊讶这家伙的代码可以工作 – enorl76

回答

10

回调的节点标记是第一个参数错误。

Superagent遵循此节点策略。这是superagent github site

request 
    .post('/api/pet') 
    .send({ name: 'Manny', species: 'cat' }) 
    .set('X-API-Key', 'foobar') 
    .set('Accept', 'application/json') 
    .end(function(err, res){ 
    // Calling the end function will send the request 
    }); 

所以这条线

request.get('localhost:8080').end(function(res){ 

改变

request.get('localhost:8080').end(function(err, res){ 
+0

这就是问题@lkrnac - 测试正在工作。 – metame

相关问题