在循环内运行多个量角器测试

时间:2015-03-11 20:19:41

标签: javascript angularjs testing protractor

我有一个页面,它让用户通过不同的面板和一些测试几乎完全相同,除了我想要给出的几个不同的输入。我尝试了一种类似于this question的方法但是我有超过1 it块,只有第一个被运行,而后面的测试都被忽略了。

describe('Page flow test', function() {

    var page    = require('../PageObjects/SomePage.js');
    var configs = require('../Configs.js');

    for(var i = 0; i < configs.length; i++) {
        (function(config) {

            it('should do something', function() {
                expect( config.name ).toEqual( config.nameToExpect );
            });

            it('should find an email', function() {
                page.emailInput.sendKeys( config.email );
                page.emailSearchSubmitButton.click();
                expect( page.emailSearchResult ).toEqual( config.emailToExpect );
            });

            // More tests...

        })( configs[i] );
    }

});

发现有些of a workaround虽然不太理想。

1 个答案:

答案 0 :(得分:1)

我有这个为我工作,我能在代码之间看到的唯一区别是我们创建自执行功能的方式

for(var i=0; i<filterTypes.length; i++){
  function setFilterUsingCheckBox(n){
    var filterType = filterTypes[n]          

    it('- Should check '+filterType+' filter text is correct', function(){
      var checkedCount = 'All'
        , filterText = filtersBar.filterText(filterType).getText();
         expect(filterText).toBe(checkedCount);
    });

    it ('- Should check the '+filterType+' title is correct', function(){
      filtersBar.openFilter(filterType);
      filtersBar.filterTitleText(filterType).getText().then(function(titleText){
        expect(titleText).toEqual(filterTitle);
      })
    });


  }setFilterUsingCheckBox(i)
}

filter-types是一个字符串数组,这就是为什么我能够在我的块描述中使用我所使用的当前过滤器类型的原因。

不知道为什么你的工作不起作用,也许有比我更好的JavaScript知识的人可以提供建议,尝试我的实现并让我们知道,我有兴趣知道。如果以上内容对您有用,那很好,但我不会将此标记为答案,因为我没有解释原因。