Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 摩卡测试超时_Node.js_Testing_Mocha.js - Fatal编程技术网

Node.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('/')

我的摩卡咖啡测试似乎并没有停止,一旦完成调用。我有点不知所措,因为它看起来和我在网上能找到的所有东西几乎一模一样

这是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('/').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(请参阅:)