我正在尝试在Protractor中编写一个使用or expected condition的expect语句。但是,该文档没有任何关于如何使用'或'的示例。或者'和'用这些块。
我尝试过做
expect(myString).or.toEqual('a string').toEqual('another string')
expect(myString).toEqual('a string').or.toEqual('another string')
只是为了踢
expect(myString).toEqual('a string', 'another string')
此问题已被提出previously,但只给出了解决方法。
我想实际使用Protractor中内置的函数,因为它应该允许消息读取类似
的内容Expected 'a totally different string' to be 'a string' or 'another string'
答案 0 :(得分:1)
您始终可以编写自定义匹配器。在这种情况下,不需要编写一个,Expect item in array提供的一个适合您的用例。对于茉莉花1.x:
this.addMatchers({
toBeIn: function(expected) {
var posibilities = Array.isArray(expected) ? expected : [expected];
return posibilities.indexOf(this.actual) > -1;
}
});
用法:
expect(myString).toBeIn(["a string", "another string"]);
仅供参考,还有一个有用的自定义茉莉花匹配器库:jasmine-matchers。
答案 1 :(得分:1)
此处提供了示例:http://angular.github.io/protractor/#/api?view=ExpectedConditions。但是,您混淆了预期条件的使用,这些条件用于browser.wait
而不是预期。
答案 2 :(得分:0)
这有点像黑客,但它只是帮助了我。我发布它,以防它对某人有用,不是因为我认为这是最优雅的方法(它也可能是“解决方法”)。如果你的字符串真的不同,它可以工作,它适用于字符串,而不是更普遍。就我而言,我必须首先解决这个承诺。
myString.getText().then(function(text){
expect('a stringanother string'.search(text)).toBeGreaterThan(-1);
});
当然上面会很乐意传递像'n'或'another'这样的部分匹配或像'ngano'这样的废话。在我的案例中,这些都不会发生。