AssertionError: expected [ true ] to be true
AssertionError: expected [ true ] to be true
我遇到过奇怪的断言问题,所以即使是成功的断言也会被标记为失败,如下所示:
this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eventually.be.true.and.notify(next);
在控制台中我有:
1 scenario (1 passed)
4 steps (4 passed)
0m03.618s
[17:06:38] E/launcher - expected [ true ] to be true
[17:06:38] E/launcher - AssertionError: expected [ true ] to be true
正如您在本例中看到的,尽管断言失败,但测试标记为成功,但如果在 'failed' 断言之后还有另一个断言,则整个事情都会失败。
我使用的是量角器和 chai 的最新版本。
似乎 this.getWidget('contacts').isNamesDisplayed()
正在返回数组值 [true]
而不是 true
。您需要如下更改您的期望语句。
this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eql([true]).and.notify(next);
接受的答案很棒。接受的答案重申了 Protractor 的抱怨,这令人沮丧但非常明确:
... returning an array value [true]...
显然这是 OP 函数的行为 isNamesDisplayed
。但可能还有其他原因:
就我而言,我不小心使用了$$
,而不是$
,我是expect($$('div.to-test').isDisplayed()).toBe(true)
。 $$
是一个 "Shorthand function for finding arrays of elements by css" 。
所以请注意,一个角色 $
可能是所有生活问题的原因(和解决方案):expect($('div.to-test').isDisplayed()).toBe(true)
、
(或者正如公认的答案所说,您可以... "change your expectations" :))
expect($$('div.to-test').isDisplayed()).toBe([true]);
也许对于您实际希望重复的内容更有意义,例如 <ul>
中的 <li>
列表项
expect($$('ul.to-test li').isDisplayed()).toBe([true, true, true]);
我遇到过奇怪的断言问题,所以即使是成功的断言也会被标记为失败,如下所示:
this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eventually.be.true.and.notify(next);
在控制台中我有:
1 scenario (1 passed) 4 steps (4 passed) 0m03.618s [17:06:38] E/launcher - expected [ true ] to be true [17:06:38] E/launcher - AssertionError: expected [ true ] to be true
正如您在本例中看到的,尽管断言失败,但测试标记为成功,但如果在 'failed' 断言之后还有另一个断言,则整个事情都会失败。
我使用的是量角器和 chai 的最新版本。
似乎 this.getWidget('contacts').isNamesDisplayed()
正在返回数组值 [true]
而不是 true
。您需要如下更改您的期望语句。
this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eql([true]).and.notify(next);
接受的答案很棒。接受的答案重申了 Protractor 的抱怨,这令人沮丧但非常明确:
... returning an array value [true]...
显然这是 OP 函数的行为 isNamesDisplayed
。但可能还有其他原因:
就我而言,我不小心使用了$$
,而不是$
,我是expect($$('div.to-test').isDisplayed()).toBe(true)
。 $$
是一个 "Shorthand function for finding arrays of elements by css" 。
所以请注意,一个角色 $
可能是所有生活问题的原因(和解决方案):expect($('div.to-test').isDisplayed()).toBe(true)
、
(或者正如公认的答案所说,您可以... "change your expectations" :))
expect($$('div.to-test').isDisplayed()).toBe([true]);
也许对于您实际希望重复的内容更有意义,例如 <ul>
<li>
列表项
expect($$('ul.to-test li').isDisplayed()).toBe([true, true, true]);