我正在使用量角器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 popup
和Should Open the search modal popup
下面的规范也将失败,因为模式本身未打开。所以运行以下规格没有意义。我可以有条件地运行最后两个规格吗?就像第一个规范已经过去一样,以下规格应该运行。
答案 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