我知道mocha之前和之后都有全局,并且之前和之后都进行了每次测试,但我想要的是之前和之后的测试特定。像SoapUI这样的东西。
例如,假设我有一个测试检查用户的创建是否有效。
我希望在测试之前从数据库中删除用户(如果存在)。我希望测试确保在测试后删除用户。但我不想为每个测试做这个,因为只有一个测试实际上会创建用户。其他测试将删除用户,更新用户,无法创建已存在的用户等。
这是可能的,还是我必须在测试中包含设置和拆除代码?如果是这样,我如何确保设置和拆卸都能正确执行,与测试结果无关?
答案 0 :(得分: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
的回调中)。但是,Mocha会将任何失败视为失败的测试,期间。传递给it
的回调在哪里发生故障并不重要。断言库允许您提供自定义错误消息,这些消息可以帮助您找出确切失败的内容,但Mocha将以it
以相同方式查看所有失败:测试失败。如果你希望Mocha以不同于测试失败的方式处理setup / teardown代码中的失败,那么你有使用钩子,如上所示。