Node.js 摩卡测试超时
我的摩卡咖啡测试似乎并没有停止,一旦完成调用。我有点不知所措,因为它看起来和我在网上能找到的所有东西几乎一模一样 这是test.js文件的全部内容Node.js 摩卡测试超时,node.js,testing,mocha.js,Node.js,Testing,Mocha.js,我的摩卡咖啡测试似乎并没有停止,一旦完成调用。我有点不知所措,因为它看起来和我在网上能找到的所有东西几乎一模一样 这是test.js文件的全部内容 var request = require('supertest'); var app = require('../app.js'); describe('GET /', function() { it('Should be status code 200', function(done) { request(app).get('/')
var request = require('supertest');
var app = require('../app.js');
describe('GET /', function() {
it('Should be status code 200', function(done) {
request(app).get('/').expect(200, done);
});
});
这是我的app.js
// set variables for environment
var express = require('express');
var app = express();
var path = require('path');
// Set port
app.set('port', (process.env.PORT || 4000));
// Views as directory for all template files
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade'); // use either jade or ejs
// Instruct express to server up static assets
app.use(express.static('public'));
// Set routes
app.get('/', function(req, res) {
res.render('index');
});
// Main
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});
module.exports = app;
我得到这个输出
节点应用程序正在端口4000上运行/
–œ“应为状态代码200(141ms)
1) 毕竟,“钩子”的状态代码应该是200
1通过(2s)1失败
1) 毕竟,“钩子”的状态代码应该是200:
错误:超过2000毫秒的超时。请确保在此测试中调用了done()回调
.您不应该从app.js调用
listen
。这就是supertest API变得混乱的地方。删除:
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});
并插入一个单独的模块。
app.js
应该只导出app
,这样您就可以测试它。您不应该从app.js调用listen
。这就是supertest API变得混乱的地方。删除:
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});
然后插入一个单独的模块。
app.js
应该只导出app
,这样你就可以测试它。我会更改你的测试。我不确定你是否需要你的app.js。你调用的是错误的请求。你应该定义你的端点url并请求它。而不是调用应用文件上的请求。将你的测试更改为l例如:
var request = require('supertest');
var url = "http://yourapi.com:4000";
this.timeout(15000);
describe('GET /', function() {
it('Should be status code 200', function(done) {
request(url).get('/').expect(200, done);
});
});
您还可以将this.timeout设置为15秒,以防您的请求需要更多的时间才能完成。至少您知道它工作正常,但速度很慢。我会更改您的测试。我不确定您是否需要app.js。您调用的是错误的请求。您应该定义您的端点url和请求,而不是调用应用文件上的请求继续。将测试更改为以下内容:
var request = require('supertest');
var url = "http://yourapi.com:4000";
this.timeout(15000);
describe('GET /', function() {
it('Should be status code 200', function(done) {
request(url).get('/').expect(200, done);
});
});
您还可以将this.timeout设置为15秒,以防您的请求需要更多的时间才能完成。至少您知道它工作正常,但速度很慢。您从app.js导出了什么?您从app.js导出了什么?app.listen完全删除,我看到的所有教程和其他git项目都使用app.listen(请参阅:)仍然挂起app.listen完全删除,我看到的所有教程和其他git项目都使用app.listen(请参阅:)