2014-11-27 2 views
1

나는 특성의 가치를 조롱하고 싶다. 예를 들어,이 코드에서 발 baz 조롱하기 :스칼라 모크로 특성의 가치를 조롱하다

trait Foo { 
    def bar(): Int 
    val baz: Int 
} 

val fooMock = mock[Foo] 
(fooMock.bar _).expects().returning(5) 
(fooMock.baz _).expects().returning(6) //doesn't compile 

doSomeThing(fooMock) 

내 시험에서이 문제를 해결하려면, 내가 푸 확장 한을, 다음과 같은 방식으로 baz을 구현 :

trait FooTest extends Foo { 
    override val baz: Int = 5 
} 

val fooMock = mock[FooTest] 
(fooMock.bar _).expects().returning(6) 

doSomeThing(fooMock) 

그러나이 나는 못생긴 것이고, 나는 scala mock으로 이것을하는 더 표준적인 방법이 있기를 바랬다.

나는이 question에 대한 답을 본 적이 있지만 특성에 defval을 변경해야하고, 내가이 지원되지 않는 발

답변

5

baz 유지하고 싶습니다 ScalaMock의 매크로 기반 현재 상황이 비웃을 때 조롱합니다. scala.meta을 사용할 수있게되면 우리가 해결하기를 희망하는 것 중 하나입니다. 당신이 추적하려면

, 당신은 따라 할 수 있습니다 :

https://github.com/paulbutcher/ScalaMock/issues/40

가 관심을 가질 수있는 또 다른 옵션이 있습니다 - ScalaMocks의 프록시 기반 모의 객체는 조롱 발스을지지 않습니다.

https://github.com/paulbutcher/ScalaMock/blob/master/core_tests/src/test/scala/com/paulbutcher/test/proxy/ProxyMockTest.scala#L163

+0

내가 프록시 모의 객체를 인식하지 않았다 : 예를 들어, ScalaMock 테스트 스위트를 참조하십시오. 테스트 파일에는 좋은 예제가 있지만 그것에 관한 문서가 있습니까? – lev

+1

죄송합니다. 그러나 프록시 모의 문서는 (본인이 알다시피) 바닥이 얇습니다. 좋은 점은 매크로 기반 모의 객체보다 훨씬 간단하다는 것입니다. 따라서 테스트 파일의 예제는 "it"입니다 :-) –