2016-09-19 3 views
2
내가 너무도 성공 주장은 다음과 같이 실패로 표시됩니다 이상한 주장의 문제에 직면 한

:AssertionError를 : 예상 [사실] 사실합니다

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

이 경우에는 검증 실패에도 불구하고 성공적이라고 표시되어 있지만 '실패'주장 이후에 또 다른 것이있을 경우 모든 것이 실패하게됩니다.

저는 각도기와 챠이의 마지막 버전을 사용하고 있습니다.

답변

3

true 대신 이 배열 값 [true]을 반환하는 것 같습니다. 다음과 같이 expect 문을 변경해야합니다.

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

+0

코드와 함께 확인했습니다 : AssertionError : expected [true] to equal [true] –

+0

내 대답이 업데이트되었습니다. to.Equal() 대신에'to.eql()'을 사용하십시오. 'to.eql()'에 대한 추가 정보 [http://chaijs.com/api/bdd/#arguments-section] –

+0

고마워, 작동한다. –

0

허용 된 대답은 중대하다.

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

은 분명히 그 영업의 기능 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]);

어쩌면 예를 들어, 당신이 실제로 반복 할 것으로 예상 뭔가에 대한 <ul>

에서 <li> 목록 항목을 더 의미