Protractor AssertionError:预期[true]为true
我遇到了奇怪的断言问题,因此即使成功的断言也会被标记为失败,如下所示:Protractor AssertionError:预期[true]为true,protractor,chai,cucumberjs,Protractor,Chai,Cucumberjs,我遇到了奇怪的断言问题,因此即使成功的断言也会被标记为失败,如下所示: this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eventually.be.true.and.notify(next); 在控制台中,我有: 1个场景(1个已通过) 4个步骤(4个通过) 0m03.618s [17:06:38]E/发射器-预期[正确]为正确 [17:06:38]E/launcher-AssertionError:预期[true]为
this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eventually.be.true.and.notify(next);
在控制台中,我有:
1个场景(1个已通过)
4个步骤(4个通过)
0m03.618s
[17:06:38]E/发射器-预期[正确]为正确
[17:06:38]E/launcher-AssertionError:预期[true]为true
正如您在本例中看到的,尽管断言失败,但测试仍标记为成功,但如果在“失败”断言之后还有另一个断言,则整个测试都将失败
我用的是量角器和柴的最新版本 这个.getWidget('contacts').isNamesDisplayed()似乎返回的是数组值
[true]
,而不是true
。您需要更改expect语句,如下所示
this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eql([true])和.notify(next)代码>公认的答案很好。被接受的答案重申了Grandor的投诉,虽然令人沮丧,但非常清楚:
。。。正在返回数组值[true]
显然,这就是OP函数的行为isNamesDisplayed
。但可能还有其他原因:
在我的例子中,我无意中使用了$$
,而不是$
,并且我被expect($$('div.to-test').isDisplayed()).toBe(true)
<代码>$$
是一个“”
因此,请注意一个字符,$
,可能是所有生命问题的原因(以及解决方案):expect($('div.to-test').isDisplayed()).toBe(true)
(或者,正如公认的答案所说,你可以“改变你的期望”:)
expect($$('div.to-test').isDisplayed()).toBe([true])代码>
可能对于您实际希望重复的内容更有意义,例如中的列表项
expect($$('ul.to-test li').isDisplayed()).toBe([true,true,true])代码>我已经检查过了,您的代码失败了:AssertionError:expected[true]等于[true]更新了我的答案。使用to.eql()
而不是to.Equal()
。有关to.eql()
[