Mocha Test: Uncaught TypeError: Cannot read property 'status' of null
Mocha Test: Uncaught TypeError: Cannot read property 'status' of null
学习 TDD 和我对 "Hello World" 服务器响应的第一个简单测试在 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
测试代码:
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 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){
学习 TDD 和我对 "Hello World" 服务器响应的第一个简单测试在 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
测试代码:
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 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){