首页 > 解决方案 > Mocha/Chai 节点测试中的“之前”和“描述”块中的操作顺序

问题描述

为了尝试了解我的一个 Mocha 测试的执行顺序(我看到函数执行乱序),我创建了以下简单的测试用例:

describe("methods", function () {
  before(async function () {
    console.log('---------- BEFORE ------------');
    let sum = 1 + 2;
    console.log('sum: ', sum);
  });
  describe("test case", async function () {
    console.log('---------- AFTER ------------');
  });
});

同样,我想在这里检查的是操作顺序。果然,在这种情况下,打印到控制台的所有内容都是------------ AFTER ------------. 该before块的日志记录根本不会显示在控制台中。

为什么是这样?我在这里想念什么?

在我的实际测试用例中,我使用before块来创建和保存文档。然后在下一个describe块中,我在数据库中查找它。当我遇到在创建之前查找文档的问题时,我决定做一些更简单的测试。因此,您在上面看到了什么。

标签: node.jsmongodbmocha.jschai

解决方案


这是因为“之前”块在IT之前执行

尝试执行此操作:

describe("methods", function () {
  before(async function () {
    console.log('---------- BEFORE ------------');
    let sum = 1 + 2;
    console.log('sum: ', sum);
  });
  it('should be a test', function(){

    console.log('test');

  });
  describe("test case", async function () {
    console.log('---------- AFTER ------------');
  });
});

有关更多信息,请参阅此帖子: https ://gist.github.com/samwize/8877226


推荐阅读