我遇到了奇怪的断言问题,所以即使成功的断言也被标记为失败,如下所示:
this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eventually.be.true.and.notify(next);
在控制台中我有:
1个场景(1个通过) 4步(4步) 0m03.618s [17:06:38] E / launcher - 预期[true]为真 [17:06:38] E / launcher - AssertionError:期望[true]为真
正如你在本案例中看到的那样,尽管断言失败,但测试标记为成功,但是如果在“失败”断言之后还有另一个断言,那么整个事情将会失败。
我正在使用量角器和柴的最新版本。
答案 0 :(得分:3)
似乎this.getWidget('contacts').isNamesDisplayed()
正在返回数组值[true]
而不是true
。你需要改变你的期望陈述如下。
this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eql([true]).and.notify(next);
答案 1 :(得分:1)
接受的答案很棒。接受的答案重申了量角器的投诉,这令人沮丧,但非常明确:
...返回数组值[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)
,
(或者正如接受的答案所说,你可以......"改变你的期望" :))
expect($$('div.to-test').isDisplayed()).toBe([true]);
对于您实际期望重复的内容可能更有意义,例如<li>
<ul>
列表项
expect($$('ul.to-test li').isDisplayed()).toBe([true, true, true]);