学习TDD和我对“Hello World”服务器响应的第一个简单测试在Mocha中失败了.我正在使用Mocha.js,Superagent,& Expect.js.
当我卷曲-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();
- });
- });
- });
服务器代码:
- 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
我试过谷歌搜索这个问题,但没有运气找出我做错了什么.
解决方法
回调的节点表示法是第一个参数错误.
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){