当用Chai进行unit testing时,“TypeError:无法读取属性”的“undefined”地址是什么意思?

当使用chai进行unit testing并且没有任何testing通过时,我仍然收到这个错误消息。 这在这方面意味着什么? 谢谢。

var chai = require('chai'); var chaiHttp = require('chai-http'); var server = require('../server.js'); var should = chai.should(); var app = server.app; var storage = server.storage; chai.use(chaiHttp); describe('Shopping List', function() { it('should list items on GET', function(done) { chai.request(app) .get('/items') .end(function(err, res) { res.should.have.status(200); res.should.be.json; // jshint ignore:line res.body.should.be.a('array'); res.body.should.have.length(3); res.body[0].should.be.a('object'); res.body[0].should.have.property('id'); res.body[0].should.have.property('name'); res.body[0].id.should.be.a('number'); res.body[0].name.should.be.a('string'); res.body[0].name.should.equal('Broad beans'); res.body[1].name.should.equal('Tomatoes'); res.body[2].name.should.equal('Peppers'); done(); }); }); 

完整的错误信息:

 1) Shopping List should list items on GET: TypeError: Cannot read property 'address' of undefined at serverAddress (/home/ubuntu/workspace/thinkful-node-course/unit2/node_modules/chai-http/lib/request.js:252:17) at new Test (/home/ubuntu/workspace/thinkful-node-course/unit2/node_modules/chai-http/lib/request.js:244:53) at Object.obj.(anonymous function) [as get] (/home/ubuntu/workspace/thinkful-node-course/unit2/node_modules/chai-http/lib/request.js:216:14) at Context.<anonymous> (test-server.js:14:8) 

发现问题:首先必须确保我正在testing的文件,server.js正确导出到test.js文件。

另外我忘了把test.js文件放在一个单独的testing文件夹中。 我希望错误消息不是那么模糊。 当我努力修复代码本身的时候,就把我当成了一个疯狂的追逐者。

而不是使用应用程序尝试使用:

 chai.request('http://localhost:1234') .get('/items') 

问题是最可能的variablesapp实际上是未定义的,因为在这种情况下引发此错误,您需要检查您是否正确导入您的server.js文件,并且它包含属性应用程序与您的服务器应用程序的实例。