摩卡testing:未捕获TypeError:无法读取null的属性“状态”
学习TDD和我的“Hello World”服务器响应的第一个简单testing在Mocha中是失败的。 我正在使用Mocha.js,Superagent和Expect.js。
当我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
testing代码:
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(); }); }); });
服务器代码:
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
我试着用Googlesearch这个问题,但没有运气发现我做错了什么。
callback的节点标记是第一个参数错误。
Superagent正在遵循这个Node策略。 这是来自superagent github网站 :
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){