2017-09-18 117 views
0

我知道摩卡具有全球前后,每个测试之前和之后,但我想是测试特定的前后。像SoapUI一样。摩卡/柴 - 测试具体设置和拆除

例如,假设我有一个测试检查用户的创建是否有效。

我想在测试之前从数据库中删除用户,如果它存在的话。我希望测试能够确保用户在测试后被移除。但我不想为每个测试做这个,因为只有一个测试会真正创建用户。其他测试将删除用户,更新用户,未能创建已存在的用户等。

这是可能的,还是必须在测试中包含设置和拆卸代码?如果是这样,我如何确保设置和拆卸都正确执行,与测试结果无关?

回答

4

对于那些我需要有特殊的安装和拆卸代码,但不是来自他们的兄弟姐妹,否则区分的测试,我只是把一个describe块带有空标题:

describe("SomeClass",() => { 
    describe("#someMethod",() => { 
     it("does something",() => {}); 
     it("does something else",() => {}); 

     describe("",() => { 
      // The before and after hooks apply only to the tests in 
      // this block. 
      before(() => {}); 
      after(() => {}); 

      it("does something more",() => {}); 
     }); 
    }); 
}); 

这是可能的,还是必须在测试中包含设置和拆卸代码?如果是这样,我如何确保设置和拆卸都正确执行,与测试结果无关?

可以放安装和拆卸测试本身的代码(内部的即传递给it回调)。但是,摩卡将把任何故障视为测试,期间。在传递给it的回调中发生故障并不重要。断言库允许您提供自定义错误消息,这可以帮助您找出究竟发生了什么故障,但Mocha将以同样的方式看到it中的所有失败:测试失败。如果您希望Mocha以与测试失败不同的方式处理安装/拆卸代码中的故障,那么您的必须使用来使用上面显示的钩子。

+0

谢谢,那我就知道了。所以,虽然有点迂回,但很高兴知道有办法处理安装和拆卸。 –