使用嵌套的describe块调用beforeEach和afterEach

时间:2016-06-19 22:19:46

标签: javascript jasmine

我试图在我编写的茉莉花测试套件的每个嵌套描述之前和之后调用一些逻辑。

我现在有这样的事情:

describe('Outer describe', function () {
    beforeEach(function () {
        login();
        someOtherFunc();
    });

    afterEach(function () {
        logout();
    });

    describe('inner describe', function () {
        it('spec A', function () {
                expect(true).toBe(true);
        });

        it('spec B', function () {
                expect(true).toBe(true);
        });
    });
});

我发现beforeEachafterEach中的所有功能都是针对我内心描述中的每个it而调用的。我只希望在外层描述中为每个内部描述调用一次。

这可能吗?

2 个答案:

答案 0 :(得分:4)

我认为你应该使用'beforeAll'和'afterAll'来获取描述中的规格。以下摘自茉莉花网站:http://jasmine.github.io/2.1/introduction.html

在运行describe中的所有规范之前,只调用一次beforeAll函数,并在所有规范完成后调用afterAll函数。这些功能可用于通过昂贵的设置和拆卸来加速测试套件。

但是,请小心使用beforeAll和afterAll!由于它们不会在规格之间重置,因此很容易在规格之间意外泄漏状态,以致它们错误地通过或失败。

答案 1 :(得分:1)

为了实现这一点,我定义了一个公共函数,然后在每个嵌套beforeAll的{​​{1}} / afterAll中引用它。

describe

这似乎是最干净的解决方案。