为什么我的超级测试测试会间歇性地失败?

时间:2018-10-20 10:05:25

标签: javascript node.js mocha supertest

我有一个网络应用程序,其中包含大约4000个路由测试。我现在看到的是常规失败,没有一致性:1次失败,3次失败,通过-2个示例:

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/markry/workspace/personal/supertest-example/tests.spec.js)

Uncaught TypeError: Cannot read property 'body' of undefined

可以使用以下示例运行一个工作示例:https://github.com/joshmatz/supertest-example并在测试中包装一个for循环。

for (step = 0; step < 5000; step++) {
  it('should have return version number', function(done) {
    request(app)
      .get('/api')
      .end(function(err, res) {
        expect(res.body.version).to.be.ok;
        expect(res.statusCode).to.be.equal(200);
        done();
      });
  });
}

这是某种主机限制吗?我该如何调试呢?

谢谢:)

-----更新-----

如果我使用SuperAgent(https://github.com/visionmedia/superagent),则在以下方面可以获得100%的可靠性:

for (step = 0; step < 5000; step++) {
  it('should have return version number', function(done) {
   request
   .get('http://localhost:3000/api')
   .end(function(err, res) {
      expect(res.body.version).to.be.ok;
      expect(res.statusCode).to.be.equal(200);
      done();
    });
  });
}

还将此代码段添加到server.js:

// take the port or set it to 3000
const port = process.env.PORT || 3000;
console.log('port=' + port)
// start the server
app.listen(port);

我正在更改测试以使用SuperAgent:)

0 个答案:

没有答案