首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mocha系列运行多个'its‘

Mocha系列运行多个'its‘
EN

Stack Overflow用户
提问于 2019-03-13 05:01:03
回答 1查看 29关注 0票数 0

我想运行一系列的测试,这些测试建立在以前测试中使用的数据之上。

这是如何通过类似以下内容来实现的:

代码语言:javascript
复制
describe(``,()=>{
    let t = true;
    it(`test1`,()=>assert(t));
    t = false;
    it(`test2`,()=>assert(!t));
});

它失败了,因为第3行在第4行之后执行。

EN

Stack Overflow用户

回答已采纳

发布于 2019-03-13 06:34:44

不建议让测试依赖于其他测试设置的状态。作为一个测试套件变得更加复杂,能够使用Mocha的grep选项,或者能够临时使用it.only,这样当你有一个失败的测试时,你可以专注于只运行那个测试,这是非常有用的。但是,如果您的测试依赖于在其之前运行的其他测试才能正常运行,则不能将其隔离。如果您进入调试器并在您所关心的实际测试之前在命中十几次的行上设置断点,这很快就会过时。

在您展示的示例代码中,您可以这样做:

代码语言:javascript
复制
describe(``,()=>{
    let t = true;
    it(`test1`,()=>assert(t));
    it(`test2`,() => {
      t = false; // Set the state here.
      assert(!t);
    });
});

comment中,尼克建议在test1中设置t。我建议在test2中设置它。使用我上面建议的代码,您可以运行mocha --grep test2,或者临时将it(`test2`...更改为it.only(`test2`...,这样您的测试就会运行得很好。

但是,我怀疑您的实际代码比您给出的示例更复杂,并且可能实际上使用了一些重要的代码来设置测试的状态。如果您想将测试设置代码与测试本身分开,您可以这样做:

代码语言:javascript
复制
describe(``,() => {
    describe("", () => {
      let t;
      before(() => {
        t = someSubtantialInitialization();
      });

      it(`test1`, () => ...);
    });

    describe("", () => {
      let t;
      before(() => {
        t = someOtherSubstantialInitialization();
      });

      it(`test2`,() => ...);
    });
});

Mocha有beforebeforeEach挂钩,但它没有beforeJustThisOneTest挂钩。通过将测试和钩子放在各自的describe块中,可以将钩子与单个测试关联起来。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55130584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档