当前位置: 首页 > 面试题库 >

开始摩卡咖啡并行描述

富锦
2023-03-14
问题内容

我希望能够同时启动我在Mocha中的所有describe语句。有人可以帮我弄清楚该怎么做吗?


问题答案:

您无法直接使用mocha进行此操作,因为它会创建it()回调的列表并按顺序调用它们。 如果您愿意将自己的描述移到单独的.js文件中,mocha-
parallel-tests
可以执行此操作。为了说服自己,请将其安装在某个地方,然后用–low缓慢调用它,以便每次都报告:

laptop:/tmp/delme$ npm install mocha-parallel-tests
laptop:/tmp/delme$ cd node_modules/mocha-parallel-tests
laptop:/tmp/delme/node_modules/mocha-parallel-tests$ ./bin/mocha-parallel-tests test/parallel/tests --timeout 10000 --slow 100

您将看到它运行了最长的时间运行了三个(非常简单)的测试套件。

如果您的测试不依赖于早期测试的副作用,则可以使它们全部异步。一种简单的方法是在描述之前启动需要一段时间的东西,然后使用常规的摩卡咖啡设备对其进行评估。在这里,我创建了一堆承诺,需要一段时间才能解决,然后再次遍历测试,并在.then()函数中检查其结果:

var expect = require("chai").expect;



var SlowTests = [

  { name: "a" , time: 250 },

  { name: "b" , time: 500 },

  { name: "c" , time: 750 },

  { name: "d" , time:1000 },

  { name: "e" , time:1250 },

  { name: "f" , time:1500 }

];



SlowTests.forEach(function (test) {

  test.promise = takeAWhile(test.time);

});



describe("SlowTests", function () {

  // mocha defaults to 2s timeout. change to 5s with: this.timeout(5000);

  SlowTests.forEach(function (test) {

    it("should pass '" + test.name + "' in around "+ test.time +" mseconds.",

       function (done) {

         test.promise.then(function (res) {

           expect(res).to.be.equal(test.time);

           done();

         }).catch(function (err) {

           done(err);

         });

       });

  });

});



function takeAWhile (time) {

  return new Promise(function (resolve, reject) {

    setTimeout(function () {

      resolve(time);

    }, time);

  });

}

(将其另存为foo.js并使用调用mocha foo.js。)

Meta
我不同意测试应该主要是同步的说法。编译前后比较容易,但是很少有一项测试会使所有其余测试无效。所有不鼓励异步测试的做法都是不鼓励对网络任务进行广泛的测试。



 类似资料:
  • 我有一个叫MochaTests的目录。在这里,我有一个在摩卡网站“1.2.3摩卡”上找到的示例测试。在命令提示符下(我的操作系统是WIN7),我输入Mocha,结果是。我按照说明进行了安装:,我可以告诉它安装得很好 所以,在

  • 问题内容: 我正在尝试使用Mocha来测试构造函数是否引发错误。我无法使用Expect语法执行此操作,因此我想执行以下操作: 这可能吗? 问题答案: 您可以尝试使用Chai的 构造。例如:

  • 问题内容: 我正在尝试测试Express.js控制器,但是每隔一段时间我就会碰到mocha超时提示我的问题。 文档(https://mochajs.org/#working-with-promises) 我用Promises包装了Express控制器,以便随后可以在测试中将它们返回。 我有一个基本测试,可以运行以始终得到错误消息: 我得到的错误是: 我不明白为什么会出现错误,因为我正在返回确实解决

  • 问题内容: Mocha(Node.js的测试框架)使用make。 为了我的生命,我找不到适用于Windows的兼容make.exe。 在Mac上,一切正常。 我试过使用VS的nmake.exe和我发现从Unix移植的make.exe。但是它们都是不兼容的。 不能只是我 这是makefile: 在锅上做面包。在PHONY中,即使我将其删除,它也永远不会运行mocha命令(或者至少没有输出)。 直接运

  • 问题内容: 以下测试的行为异常: 我应该如何正确处理被拒绝的承诺(并进行测试)? 我应该如何正确处理失败的测试(即:? 这是我正在测试的实现: 问题答案: 最简单的方法是使用Mocha在最新版本中提供的内置Promise支持: 或者使用现代Node和async / await: 因为这种方法是端到端的承诺,所以它更易于测试,您不必考虑正在考虑的奇怪情况,就像到处都是奇怪的电话一样。 这是Mocha

  • 我试着用“浓缩咖啡”写简单的测试 但我有个错误: 我正在尝试不同的框架进行测试,对我来说是最好的,但如果有人能帮助修复这个错误,我将非常感激