将多个布尔检查简化为单个布尔检查

ale*_*cxe 11 javascript testing dry jasmine protractor

在我们的一项测试中,我们有以下一系列期望:

expect(headerPage.dashboard.isDisplayed()).toBe(true);
expect(headerPage.queue.isDisplayed()).toBe(true);
expect(headerPage.claimSearch.isDisplayed()).toBe(true);
expect(headerPage.claim.isDisplayed()).toBe(true);
expect(headerPage.case.isDisplayed()).toBe(true);
expect(headerPage.calendar.isDisplayed()).toBe(true);
Run Code Online (Sandbox Code Playgroud)

一方面,有多个简单的期望提供了更精确和可理解的反馈,但另一方面,这看起来违反了DRY原则"每次测试的一个期望"通常可接受的指导方针.

有没有办法将其转换/简化为单一预期?


headerPage是一个页面对象,dashboard其他页面对象字段是导航链接.

Ret*_*sam 15

我认为你误解了"每次测试期望"指南的目的.关键不在于将一堆期望结合到一个单一的期望中,而是将您的期望分成单独的测试.

要遵循该指南的精神,您可以像这样编写测试:

describe("The header page", function () {
    var headerPage;
    beforeEach(function () {
        //Common logic here
    });

    it("displays the dashboard", function () {
        expect(headerPage.dashboard.isDisplayed()).toBe(true);
    });

    it("displays the queue", function () {
        expect(headerPage.queue.isDisplayed()).toBe(true);
    });

    it("displays the claimSearch", function () {
        expect(headerPage.claimSearch.isDisplayed()).toBe(true);
    });

    //etc.
});
Run Code Online (Sandbox Code Playgroud)

这比你所拥有的要冗长得多; 但这就是为什么这些是指导而不是规则.这是您进行测试的详细程度与以后调试的简单程度之间的权衡.("标题页显示仪表板:FAILED")是一个非常清晰且特定的测试失败消息,与获取相同的失败消息相比,无论哪个期望实际失败.

我绝对不会尝试将所有这些线组合成一条线.如果您不想将其拆分为一堆不同的测试用例,我会留下它的样子.