【问题标题】:How to conditionally run test specs - Angular Protractor Jasmine如何有条件地运行测试规范 - Angular Protractor Jasmine
【发布时间】:2016-04-27 07:23:05
【问题描述】:

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

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 下面的规范也会失败,因为模态本身没有打开。因此,运行以下规格毫无意义。我可以有条件地运行最后两个规范吗?就像只有当第一个规范通过时,下面的规范才应该运行。

【问题讨论】:

    标签: angularjs protractor angularjs-e2e gulp-protractor


    【解决方案1】:

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

    幸运的是,Protractor 提供了基于 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

    【讨论】:

    • 测试模态是否可见不是e2e测试的一部分?
    • You would NOT check for a property of modalOpened to be true ---- 实际上modalOpened 只是一个JavaScript 变量等于element(by.css('xx'))
    • 您的测试是在测试功能,而不是如何实现该功能。如果您决定交换模态库,那么如果您正在测试 CSS 而不是 JS 变量,那么您的测试仍然可以工作。然而,如何实施测试对于确保实施它并不重要。只要您遵循 Protractor 语法并在预期时实际测试模态显示,您就是金牌。
    猜你喜欢
    • 2016-10-11
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2023-04-05
    相关资源
    最近更新 更多