我有一个页面,可以让用户浏览一系列不同的面板和一些几乎完全相同的测试,除了我想提供的几个不同的输入。我尝试了一种类似于 this question 的方法但是我有超过 1 个 it
block ,并且只运行了第一个,而后面的测试都被忽略了。
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尽管它不太理想。
最佳答案
我有这个为我工作,我能看到我们的代码之间的唯一区别是我们创建自执行函数的方式
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 是一个字符串数组,这就是为什么我能够在我的 it block 描述中使用当前的过滤器类型。
不知道为什么你的不起作用,也许比我更了解 JavaScript 的人可以建议,尝试我的实现并让我们知道,我有兴趣知道。如果以上内容对您有用,那很好,但我不会将此标记为答案,因为我没有解释原因。
关于javascript - 在循环内运行多个 Protractor 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28996532/