Specs2 및 Mockito를 사용하여 일부 스칼라 코드를 시운전하려고합니다. 나는 세 가지 모두에 대해 비교적 새로운데, 조롱 한 메소드가 null을 반환하는 데 어려움을 겪고있다. 에서Scala, Specs2, Mockito 및 null 반환 값
(일부 이름 변경과 함께 전사) 나는 SUT의 번역기 호출을 추가하고, mockParser.parse
방법은 널 (null)을 반환했기 때문에 다음 죽을 때까지
"My Component's process(File)" should {
"pass file to Parser" in new modules {
val file = mock[File]
myComponent.process(file)
there was one(mockParser).parse(file)
}
"pass parse result to Translator" in new modules {
val file = mock[File]
val myType1 = mock[MyType1]
mockParser.parse(file) returns (Some(myType1))
myComponent.process(file)
there was one(mockTranslator).translate(myType1)
}
}
은 "파서에 패스 파일이"작동 다음 이것은 번역기 코드가 취할 수 없습니다.
비슷하게 SUT에서 번역 결과를 사용하려고 시도 할 때까지 "번역기로 전달 구문 분석 결과"가 전달됩니다.
이 두 가지 메소드에 대한 실제 코드는 결코 null을 반환 할 수 없지만 Mockito에게 예상 결과가 사용 가능한 결과를 반환하도록하는 방법을 알지 못합니다.
I 수있는 SUT에 널 (null) 검사를 넣어,하지만, 내가 널 대신 Option
, None
및 Some
를 사용하여 반환하지 않습니다하십시오 만들고있어 오히려하지 않는 게 좋을으로하여이 주위의 코스 작업의. 좋은 스칼라/Specs2/Mockito 튜토리얼에
포인터로는 SUT 경우에 계속 실행을 허용 뭔가를 반환 할
there was one(mockParser).parse(file)
같은 줄을 변경하는 방법에 대한 간단한 예는 것, 멋진 것 널 (null)을 처리하지 않습니다. 이 문제를 알아 내려고 노력에 대해 떨고
, 나는 내가 돌려 원하는 타입이다 myResult의 값으로
there was one(mockParser).parse(file) returns myResult
에 그 라인을 변경 시도했다. 그게 내 반환 형식보다는 MatchResult
을 찾을 것으로 예상대로 컴파일 오류를 줬어.
중요한 경우 스칼라 2.9.0을 사용하고 있습니다.
두 번째 테스트에서는 스텁에서이 코드를 사용하지만 스텁보다는 예상치 못한 문제가 있습니다. 나는 명확히하기 위해 편집 할 것이다. –
지금 편집을 완료했습니다. 링크 된 페이지도 살펴 보겠습니다. 나는 이전에 그것을 본 적이 있다고 생각하지만, 이전의 독서에 필수적인 단서를 놓쳤을 수도 있습니다. –
그에 따라 대답을 편집했습니다 – Nicolas