我不是开发人员,而是 QA 人员,并且是 Node.js 的新手。 我需要关于 mocha 测试用例的帮助。

我有一个带有 Mocha 5.0.0 测试用例的 Node.js 8 微服务应用程序,它在本地运行良好,但在公司 Jenkins 服务器上因超时错误而失败。

这是代码:

测试.js:

var assert = require('assert');
var request = require('request');

describe("My Unit Test",function(done){
    this.timeout(30000);
    // #1 Test to check if the REST app is running
        it("should find the service to be running",function(){
         request('http://my_server:myport', function (error, response, body) {
            assert.equal(response.statusCode, 200, 'REST URL is up'); 
            done();
        });  
...     
        });       
    });

本地输出:

> mocha test.js

  My Unit Test
     √ should find the service to be running (704ms)

  1 passing


詹金斯输出:

[2020-02-21 09:35:28] > mocha test.js --timeout 30000
[2020-02-21 10:22:54]     1) should find the service to be running
[2020-02-21 10:22:54]   0 passing (30s)
[2020-02-21 10:22:54]   1 failing
[2020-02-21 10:22:54]   1) My Unit Test
[2020-02-21 10:22:54]        should find the service to be running:
[2020-02-21 10:22:54]      Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/data/cibuild/.../workspace/test.js)
[2020-02-21 10:22:54]   
[2020-02-21 10:23:12] npm ERR! Test failed.  See above for more details.
[2020-02-21 10:23:12] Error: Command exited with status 1

我已将超时设置为 3000 到 30000,但我总是收到超时错误。

这是我的 package.json:

"scripts": {
    "start": "node main.js",
    "test": "mocha test.js --timeout 30000"

我知道 request() 现在已经过时了,而 got() 是首选,但是我不能对 test.js 文件进行太多更改,尽管我可以在一定程度上对其进行调整。 你能帮我解决超时问题吗?

#1楼 票数:0

正如 StockOverflaw 评论的那样,Jenkins 可能无法访问您的域。 您应该与您的 DevOps 团队联系。 我不太了解微服务架构的混乱,所以我不会对你的测试环境进行有根据的猜测。

对于您的问题,有两个重要问题: 1. 您是否有一个正确设置的测试环境,它始终处于运行状态? 2. Jenkins 可以访问它吗?

因为这个超时表明任何一个都不是这种情况。 #1 可能导致呼叫“迷路”,因为它们永远不会被正确拒绝。 #2 当 Jenkins 没有访问权限时发生,但 WebServer 拒绝拒绝它。 我遇到了一些企业,他们解释说这是一个“安全功能”,尽管我从来没有理解过。

根据您成功的本地测试,我将从检查 #2 开始。 为此,您必须联系您的 DevOps 团队,并要求他们检查 Jenkins 是否可以访问所述 URL。

  ask by user1492667 translate from so

未解决问题?本站智能推荐:

2回复

Mocha测试在Promise解决之前失败

我在 NodeJS 中有一个 Mocha 测试: 使用this.party.startWithPlaylist是: 代码工作正常,但我的测试不是。 开始测试后 2 秒,我收到错误消息: 错误发生后, startWithPlaylist正确完成,但似乎不适合我的测试。 我查看了 Stackoverfl
1回复

超时运行Mocha测试永远不会结束

我在使用 Mocha 在我的node.js项目上执行测试脚本时遇到了困难。 问题是测试脚本永远不会完成,除非我手动完成它(ctrl+c)。 这个问题是在我将--timeout参数添加到mocha.opts之后开始的。 添加超时是因为我使用mock-mongoose库,其中建议的超时为120000 m
1回复

尽管使用了完成,但Mocha仍在Before钩子中调用异步Promise链超时

我正在使用node.js上的mocha和chai将异步集成测试套件运行到mongoose db中。 大多数运行良好,但是对于其中一个,我必须使用before钩子进行一些预测试db-prep。 当我在挂钩之前将“完成”应用在Mocha超时时。 我得到的错误是“错误:超过5000毫秒的超时。对于异步测试
1回复

如何获得Mocha来独立运行测试?

我正在使用Mocha来运行使用node编写的测试。 我的假设是,我的每个测试都将相互隔离。 似乎并非如此。 在测试目录上运行mocha时,它似乎将所有测试文件加载在一起,然后执行每个测试套件。 当您在一个测试中使用了模块时,这可能会破坏隔离,而在另一个测试中使用的模块可能会影响隔离。 在这个Gist
1回复

mocha测试失败,未知选项-r

如果我将 TC 运行为“mocha -r .\\test-scripts\\mocha-setup.js .\\test\\test-ms.spec.js --exit”,我可以运行 TC,但如果我运行为“mocha - r .\\test-scripts\\mocha-setup.js --exi
1回复

设置mocha以运行不同的文件夹测试

我有一个文件夹结构如下: package.json 有以下配置: } 现在,我可以从命令行执行“npm test”,并且所有测试、集成和单元都将运行。 我希望能够传递一个参数,例如"npm test --folder unit_tests" ,因此只有同一文件夹下的一组测试会运行。
4回复

如何避免在Mocha测试用例中超时?

在这里,我附上了我的代码,我正在传递完成的回调并使用 supertest 进行请求。 由于我在 request.end 块内的测试用例中使用 assert/expect 为什么我需要担心超时? 我在这里犯了什么错误。 响应后的测试用例结果:错误:超过 2000 毫秒超时。 确保在此测试中调用 don
1回复

每次源文件更改时自动运行Mocha测试

告诉 Mocha 监视源项目文件更改以便它可以重新运行其测试的最简单方法是什么?