摩卡在测试用例本身(清除数据库,创建模拟文件等)的测试中,有几个“钩子”来运行辅助功能.
但是,在before()(不是beforeEach()之前,我得到的),似乎很多余.
before()在当前套件中的所有测试之前运行逻辑一次,为什么我甚至需要将它包装在一个函数中?
以下两者之间没有可观察到的差异:
describe('Something',function() { before(doSomePreTestLogic); //Tests ahoy });
和
describe('Something',function() { doSomePreTestLogic(); //Tests ahoy });
用before()包装我的预测逻辑的要点是什么?
解决方法
不知道为什么这个问题被推翻了 – 对我来说似乎是有效的.
有几种不同的原因,您可以在测试中选择before()钩子:
语义
这可能是最大的一个.有时您可能需要执行一个任务,例如在运行实际测试之前填充数据库中的一些虚拟数据.您可以在测试本身中做到这一点,但是如果在预填充情况下遇到错误,并且在运行实际测试用例之前,会抛出您的报告.通过拥有一个before()钩子,你有一个逻辑的,语义上有效的地方来插入这种逻辑.
清除异步测试
就像mocha测试可以是异步的,所以你的before()钩子逻辑.回到人口前的例子,这是很方便的,因为这意味着所有的异步预测试逻辑都不会迫使所有实际测试逻辑的其他级别的缩进.
与其他钩子一致:
Mocha还提供了几个其他钩子,即:after(),beforeEach()和afterEach().你可能也会问这个其他所有钩子的同样的问题,但是如果你买了一个这样的概念:他们中的任何一个都有一个验证的存在,那么before()之前真的需要被包括在API中.