如何有条件地运行测试规范 - Angular Protractor Jasmine

时间:2016-04-27 07:23:05

标签: angularjs protractor angularjs-e2e gulp-protractor

我正在使用量角器jasmine进行角度单页应用程序的e2e测试。请考虑以下代码段。

describe('Search', function(){
  it('Should Open the search modal popup', function() {
     //code
     expect(modalOpened).toBe(true)
  })

  it('Search should return results', function(){

  })
  it('Search should not return results', function() {

  })
})

在上面的示例中,如果Should Open the search modal popup失败,则Should Open the search modal popupShould Open the search modal popup下面的规范也将失败,因为模式本身未打开。所以运行以下规格没有意义。我可以有条件地运行最后两个规格吗?就像第一个规范已经过去一样,以下规格应该运行。

1 个答案:

答案 0 :(得分:1)

看起来您正在进行单元测试和E2E测试混淆。量角器是Selenium的子集,仅用于运行集成或端到端测试。每个E2E规范应该将您的代码单元集成在一起(因此,集成测试),并测试您所选择的浏览器是否允许每个功能发生(例如,单击搜索和带结果的模态显示)。此外,您不会检查modalOpened的属性是否为true,您将检查以确保模式存在于css,className或其他内容中,以及您的结果。

幸运的是,Protractor提供基于Asynch Promise的活动。当您单击搜索图标时,您可以执行以下操作:

it('Should Open the search modal popup and show results', function() {

    element(by.id('search')).click().then(
        function() {
             // now check for modal to be displayed

             // now check results are displayed
        }
    );
});

来源:

https://angular.github.io/protractor/#/api?view=webdriver.WebElement.prototype.click

https://angular.github.io/protractor/#/api?view=ElementFinder.prototype.then