Mocha/Chai - 测试特定的设置和拆卸

Dav*_*son 1 unit-testing mocha.js chai

我知道 mocha 前后都有全局性,前后都有每个测试,但我想要的是特定于前后的测试。类似 SoapUI 的东西。

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

我想在测试之前从数据库中删除用户(如果它存在)。我希望测试确保用户在测试后被删除。但我不想为每个测试都这样做,因为只有一个测试会实际创建用户。其他测试将删除用户、更新用户、无法创建现有用户等。

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

Lou*_*uis 5

对于我需要有特殊设置和拆卸代码但与它们的兄弟姐妹无法区分的测试,我只是放置了一个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", () => {});
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

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

可以将设置和拆除代码放在测试本身中(即在您传递给的回调中it)。但是,Mocha 会将那里的任何失败视为失败的测试,期间。传递给it失败的回调在何处发生无关紧要。断言库允许您提供自定义错误消息,这可以帮助您找出究竟失败的原因,但 Mocha 将以it相同的方式查看所有失败:测试失败。如果您希望 Mocha 将设置/拆卸代码中的失败与测试失败区别对待,那么您必须使用我上面显示的钩子。