期望多个条件

时间:2016-10-05 17:42:42

标签: protractor

我想验证AssignedAllUsers List的文本可以包含test1或test2但它不应该包含test3

我正在使用以下但不确定我遇到错误的代码有什么问题:AllAssignee.toContain is not a function

 this.IncList = element.all(by.repeater("incident in $ctrl.allIncidents"));

 this.AssignedAllUsers = this.IncList.all(by.css('[aria-label="Change assignee to "]'));


AssignedAllUsers.getText().then(function(AllAssignee){
                        console.log("AllAssignee = "+AllAssignee);
                        expect((AllAssignee.toContain(Logindata.Username0)) || (AllAssignee.toContain(Logindata.Username1)) && (AllAssignee.not.toContain(Logindata.Username2)));
                    });

2 个答案:

答案 0 :(得分:2)

您的错误是语法问题。 toContain属于被测试的值之外,换句话说,在expect语句之后的第一组括号之外。

你有这个: expect((AllAssignee.toContain(Logindata.Username0))。你还有一套额外的括号,但我认为这并不重要。

您需要关闭AllAssignee来电,它应该是:expect(AllAssignee).toContain(Logindata.Username0)

要回答您的其他问题,我们无需在expect语句中真正做到这一点。由于列表永远不应该包含test3,这是你的第一个断言: expect(AllAssignee).not.toContain(test3);

至于你的其他预期值,如果你不知道哪一个存在,只需创建一个数组并将两个可能的值放在其中。然后你可以断言数组包含test1或test2:

var myArray = ['test1', 'test2'];
expect(myArray).toContain(AllAssignee);

另请参阅有关expecting items items in an array

的相关问题

答案 1 :(得分:1)

能够解决代码问题: expect(AllAssignee).toContain('test1' || 'test2');