使用'或'在量角器的预期条件

时间:2015-03-28 01:40:00

标签: angularjs protractor

我正在尝试在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'

3 个答案:

答案 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'这样的废话。在我的案例中,这些都不会发生。