toEqual by binding无法正常工作

时间:2016-03-30 07:34:17

标签: javascript jasmine protractor

我必须通过以下方式断言:

expect(accessPolicyPage.accessPolicyName).toEqual(element.all(by.binding("pol.name")).get(0).getText());

它给了我一些很长的错误,如下所示。

  

预期'访问策略名称01'等于({ptor_:({controlFlow:   函数,schedule:Function,setFileDetector:Function,getSession:   函数,getCapabilities:函数,退出:函数,动作:   函数,touchActions:函数,executeScript:函数,   executeAsyncScript:Function,call:Function,wait:Function,sleep:   函数,getWindowHandle:Function,getAllWindowHandles:Function,   getPageSource:Function,close:Function,getCurrentUrl:Function,   getTitle:Function,findElementInternal_:Function,   findElementsInternal_:Function,takeScreenshot:Function,manage:   功能,切换

3 个答案:

答案 0 :(得分:1)

你在控制台上看到的内容是一个可怕的" 承诺对象表示。如果您需要实际值,使用then()明确解决承诺

element.all(by.binding("pol.name")).get(0).getText().then(function (text) {
    expect(accessPolicyPage.accessPolicyName).toEqual(text);
});

或者,由于accessPolicyPage.accessPolicyName是事先定义的实际文本,您只需交换匹配器中的内容,然后让expect()隐式解析承诺

expect(element.all(by.binding("pol.name")).get(0).getText()).toEqual(accessPolicyPage.accessPolicyName);

此选项更简单,通常建议使用。

答案 1 :(得分:1)

事实上,量角器支持对承诺的期望。但它只处理案例,当期望的第一个参数是承诺。以下应该有效:

expect(somePromise).toEqual(someString);
expect(somePromise).toEqual(anotherPromise);

但是这个不会:

expect(notPromise).toEqual(somePromise);

答案 2 :(得分:0)

getText()返回一个promise而不是text,需要处理。

Protractor: element.getText() returns an object and not String