2016-11-20 4 views
0

나는 결국 조건을 모두 만족해야입니다 무엇을 찾고이내가 scalatest 블록 내에서 2 개의 조건을 검증 할 수 있습니까?

eventually(timeout(Span(26, Seconds)), interval(Span(2, Seconds))) { 
     response = executeSomeFunction 
     response should be = (true) 
     if (response) { 
      something = responseResult.get 
      something should be >= (10) 
     } 
     } 

처럼 ... 뭔가를 결국 블록 내부에이 조건을 검증하기 위해 노력했다. 먼저 응답이 true인지 확인한 다음 응답이 true 일 때 if 루프 내부의 조건을 확인해야합니다. 나는 응답이

은 내가 뭘하려고 오전 확실하지 않다 "= (참)해야한다" 라인을 참조하는 "이 실행하지만 오버로드 정의에 오류 메시지가

모호한 참조를 얻고 시도 결국 여부를 내부도 가능하다.

답변

0

문제는 당신이 쓰는 것입니다

response should be = (true) 

그러나 실제로 당신이 쓰고 싶은 : 귀하의 경우

response shouldBe true 

당신이 값 trueresponse should be: ResultOfBeWordForAny[Boolean]의 할당을합니다. 여기에 어떤 전환이 기대되는지 분명하지 않습니다.

P. eventually 블록 외부에 response = executeSomeFunction을 쓰십시오. 그렇지 않으면 여러 번 실행될 수 있습니다.

P.P.S 함수의 결과를 테스트하면 eventual 호출이 필요하지 않으며, 어쨌든 범위에 포함됩니다. eventually은 모범 사례가 아니며 기능에 테스트 할 비동기 부작용이있을 때 사용됩니다.