AssertionError:期望[true]为真

问题描述 投票:2回答:2

我遇到了奇怪的断言问题,所以即使成功的断言也被标记为失败,如下所示:

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:expected [true]是真实的

正如你在本案例中看到的那样,尽管断言失败,但测试标记为成功,但是如果在“失败”断言之后还有另一个断言,整个事情将会失败。

我正在使用最后版本的量角器和柴。

protractor chai cucumberjs
2个回答
3
投票

似乎this.getWidget('contacts').isNamesDisplayed()返回一个数组值[true]而不是true。您需要更改您的期望声明,如下所示。

this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eql([true]).and.notify(next);


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]);

© www.soinside.com 2019 - 2024. All rights reserved.