AngularJS E2E测试的执行顺序

时间:2013-06-30 18:46:44

标签: testing angularjs jasmine end-to-end angular-scenario

所以,我注意到it()块中的describe()函数没有(总是)按照我写的顺序运行。

那么它们是异步的吗?以及如何强迫他们按特定顺序运行?

我想链接一堆UI突变,基本上每个it()函数检查上一步之后的UI状态。

如果它们以异步方式执行,那么这就好了。这意味着每个it()块需要包含前一个步骤中的所有步骤吗?

it('should do something', function() {
  // app is in state 1
  // do something
  // leave app in state 2
});
it('should continue from the state left after the previous block', function() {
  // app is in state 2
  // do something
  // leave app in state 3
});
it('should continue from the state left after the previous block', function() {
  // app is in state 3
  // do something
  // leave app in state 4
});
it('should continue from the state left after the previous block', function() {
  // app is in state 4
  // do something
  // leave app in state 5
});
...

1 个答案:

答案 0 :(得分:3)

“it”功能内的所有内容都是独立测试。您需要做的是在“beforeEach”函数中放置共享步骤

describe('Check pdf popup', function() {
    beforeEach(function() {
        element('.navbar a:eq(3)').click();
    });

    it('We should see the pdf popup', function() {
        expect(element('.modal h4:visible').text()).toMatch(/Email PDF/);
    });

    it('Cancel should dispel the pdf popup', function() {
        // exit pdf box
        element('input[value="Cancel"]').click();
        expect(repeater('.modal h4:visible').count()).toBe(0);
    });

    it('if customer email not set, display input for email', function() {
        expect(repeater('.modal #pdfemail:visible').count()).toBe(1);
        expect(repeater('.modal #pdfcustomercheckbox:visible').count()).toBe(0);
    });

});

您可以将其他“describe”块嵌套在一起,包含额外的“beforeEach”函数,具有发出连续命令的效果。

describe('fuel comparison', function() {
    beforeEach(function() {
        element("#gasvsdiesel").click();
    });

    it('should switch to Fuel Comparison calculator', function() {
        expect(element('.brand').text()).
            toBe("Fuel Comparison");
    });

    describe('changing gas price', function() {
        beforeEach(function() {
            input("compareFuelPrice").enter("5.888");
        });

        it('should change fuelinfo text to show reset link', function() {
            element('#content .nav-pills a[tap-click="tab=\'calculations\'"]').click();
            expect(element("#fuelinfo span:visible").text()).toBe("(Click here to set fuel prices to California defaults)");
        });

    });
   });