摩卡咖啡:不能使用一个请求来进行多个“ it”测试

tjfdfs
const request = require('supertest');

const server = request('http://localhost:9001');

describe('Get /static/component-list.json', function() {
    const api = server.get('/static/component-list.json');

    it('should response a json', function(done) {
        api.expect('Content-Type', /json/, done);
    });
    it('200', function(done) {
        api.expect(200, done); // This will failed
        // server.get('/static/component-list.json').expect(200, done); // This will successed
    });
});

api在第二个测试用例中重用时,mocha将引发错误:

mocha test/api命令结果

摩卡错误

我如何一次请求url并在多种it情况下使用

路易

解决方案

您必须为it要运行的每个测试(每个创建一个新请求您不能将同一请求重复用于多个测试。所以

describe('Get /static/component-list.json', function() {
    let api;

    beforeEach(() => {
        api = server.get('/static/component-list.json');
    });

或者,如果您想减少发出的请求的数量,则可以将对请求的所有检查合并到一个Mocha测试中。

解释

如果查看的代码supertest,则会看到当您expect使用回调expect调用方法时,会自动调用end所以这:

api.expect('Content-Type', /json/, done);

等效于此:

api.expect('Content-Type', /json/).end(done);

end方法由提供superagentsupertest用于执行请求。end方法是启动请求的方法。这意味着您已经完成了设置请求,并希望立即将其解雇。

end方法调用requestmethod,该方法的任务是使用Node的联网设备来生成Node请求对象,该对象用于执行网络操作。问题是request生成了Node请求的高速缓存,但是此Node请求对象不可重用。因此,最终,一个superagentsupertest请求不能结束两次。您必须为每个测试重新发出请求。

(您可以通过在两次测试之间手动刷新缓存的对象api.req = undefined但是,我强烈建议您这样做一方面,您可能认为可以获得的任何优化都是最小的,因为仍然需要重新提出网络请求。第二,这笔费用(superagent可能会在将来的版本中破坏)。第三,可能还有其他保持状态的变量可能需要与req一起重置。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何开始使用摩卡咖啡并进行首次测试?

全局更改默认超时或仅针对一个测试更改默认超时的最佳做法是什么?摩卡咖啡

摩卡咖啡测试即将推出

进行很长时间的摩卡咖啡测试是不好的做法吗?

如何在摩卡咖啡中进行硒测试?

摩卡只运行一个测试文件

摩卡咖啡仅运行一项测试

让摩卡咖啡等待下一次测试

使用超级测试,摩卡和模型进行环回测试

使用“ hasTextColor”使用浓缩咖啡进行测试

RSpec:如何进行一个 shared_example 测试来测试许多不同的控制器 PATCH 请求,这些请求都更新了不同的属性?

不能使用resolve.alias进行JEST测试

测试一个函数,使用多个测试用例但只使用一个断言?

使用ExpandableListView进行浓缩咖啡测试

反应组件测试。摩卡咖啡,酶测试。失误

摩卡咖啡有测试现场模式吗?

将测试参数传递给摩卡咖啡

摩卡咖啡-检索承诺测试的结果

测试完成后,摩卡咖啡挂起

摩卡咖啡-如何测试未兑现的承诺?

如何在摩卡咖啡中测试课程?

摩卡咖啡等待测试setTimeout函数

spring 如何使用一个网络环境进行多个测试

一个共享的设置部分可以进行多个测试和测试吗?

如何使用ExpectedException规则在一个测试中测试多个异常?

使用`import`语句而不是`require`来调用一次摩卡测试

使用多个变量进行测试:我正在寻找一种快速的方法来在测试中引入每个变量

不能使用cypress使用Firestore本地模拟器来测试应用

摩卡传递变量到下一个测试