2016-09-19 4 views
2

ich mit dem seltsamen Behauptungen Problem konfrontiert, so auch erfolgreich Behauptungen sind als fehlgeschlagen gekennzeichnet, wie folgt aus:AssertionError: expected [true] um wahr zu sein

this.expect(this.getWidget('contacts').isNamesDisplayed()).to.eventually.be.true.and.notify(next); 

und in der Konsole habe ich:

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

Wie Sie in diesem Fall Test als erfolgreich trotz fehlgeschlagener Zusicherung markiert, aber in dem Fall, wenn nach der "gescheiterten" Behauptung gibt es eine andere die ganze Sache wird gescheitert sein.

Ich verwende die letzten Versionen von Winkelmesser und Chai.

Antwort

3

Es scheint wie this.getWidget('contacts').isNamesDisplayed() gibt einen Array-Wert [true] statt true zurück. Sie müssen Ihre expect-Anweisung wie folgt ändern.

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

+0

ich geprüft haben, mit Ihrem Code nicht mit: AssertionError: expected [true] [true] –

+0

Aktualisiert meine Antwort auf gleich. Verwenden Sie 'to.eql()' anstelle von 'to.Equal()'. Weitere Informationen zu 'to.eql()' [http://chaijs.com/api/bdd/#arguments-section] –

+0

Danke, es funktioniert. –

0

Die akzeptierte Antwort ist groß. Die akzeptierte Antwort verweist erneut auf die Beschwerde von Protractor, was frustrierend ist aber ganz klar:

... returning an array value [true]...

offenbar, dass das Verhalten der Funktion des OP isNamesDisplayed. Aber es kann andere Gründe geben:

In meinem Fall habe ich versehentlich $$ anstelle von $ verwendet, und ich war expect($$('div.to-test').isDisplayed()).toBe(true). $$ ist ein "Shorthand function for finding arrays of elements by css".

So bewusst sein, dass ein Zeichen, $, könnte die Ursache (und Lösung) alle Lebensprobleme sein: expect($('div.to-test').isDisplayed()).toBe(true),

(oder wie die akzeptierte Antwort sagt, könnte man nur ... „ändern Sie Ihre Erwartungen“:))

expect($$('div.to-test').isDisplayed()).toBe([true]);

Vielleicht mehr Sinn für etwas macht man eigentlich wiederholen erwarten, zum Beispiel der <li> Listenelemente in einem <ul>

expect($$('ul.to-test li').isDisplayed()).toBe([true, true, true]);

Verwandte Themen