我对 Angular 世界还很陌生,并且一直在使用 angular-fullstack 生成器 + Yeoman 来构建一个项目。我正在使用 Sublime(不是 Webstorm),并且一直在尝试弄清楚如何设置项目,以便我可以从终端调试 mocha 测试,但我碰壁了。
这是使用 'yo angular-fullstack' 生成的默认 things.spec.js,其中添加了调试器语句。
var should = require('should');
var app = require('../../app');
var request = require('supertest');
describe('GET /api/things', function() {
it('should respond with JSON array', function(done) {
request(app)
.get('/api/things')
.expect(200)
.expect('Content-Type', /json/)
.end(function(err, res) {
debugger;
if (err) return done(err);
res.body.should.be.instanceof(Array);
done();
});
});
});
通过结合来自grunt-mocha-test 文档的建议和这个SO answer,我更新了 package.json 中的测试脚本,如下所示:
"scripts": {
"test": "node-debug <PATH TO GRUNT-CLI>\\grunt test"
}
当我运行“npm test”时,node-inspector 成功启动了一个浏览器实例并将调试会话附加到我的测试进程中。但是,当我按“继续”时,调试器断点未命中,并且测试失败并出现以下堆栈。任何人都知道是什么原因造成的吗?
TypeError: Cannot read property '_host' of null
at ClientRequest.http.ClientRequest.onSocket (eval at WRAPPED_BY_NODE_INSPECTOR (\node_modules\node-inspector\node_modules\v8-debug\v8-debug.js:95:15), <anonymous>:381:28)
at new ClientRequest (http.js:1432:10)
at Object.exports.request (http.js:1843:10)
at Test.Request.request (\node_modules\supertest\node_modules\superagent\lib\node\index.js:615:28)
at Test.Request.end (\node_modules\supertest\node_modules\superagent\lib\node\index.js:677:18)
at Test.end (\node_modules\supertest\lib\test.js:123:7)
at Context.<anonymous> (\server\api\thing\thing.spec.js:14:8)
at Test.Runnable.run (\node_modules\grunt-mocha-test\node_modules\mocha\lib\runnable.js:196:15)
at Runner.runTest (\node_modules\grunt-mocha-test\node_modules\mocha\lib\runner.js:374:10)
at Runner.runTests.next (\node_modules\grunt-mocha-test\node_modules\mocha\lib\runner.js:452:12)