2017-01-05 7 views
0

모의를 호출하려고 할 때마다 매번 다른 객체를 반환하는 것으로 나타났습니다.Spock에서 mock이 호출 될 때 새로운 반환 객체가 생성됩니까?

List returnedList = [] 
Service service = Mock() 
service.method() >> returnedList 

println System.identityHashCode(service.method()) 
println System.identityHashCode(service.method()) 
println System.identityHashCode(service.method()) 

출력 :

710903845 
1709394654 
759720212 

그냥 같은 개체를 반환하는 방법이 있나요?

+0

왜? 너 뭐하려고? – kazanaki

답변

0

매우 흥미로운 동작입니다. 당신은 서비스 클래스의 코드를 제공 할 수 있습니까? 이러한 결과는 방법 Service#method()final

인 경우에 설명 할 수 있습니다. 최후의 경우, 테스트 벨로우는 녹색입니다. 나는 spock 1.0-groovy2.4를 사용하고있다.

static class Service { 
    List<String> method() { 
     return ['a'] 
    } 
} 

def "mock should return the same object"() { 
    given: 
    List returnedList = [] 
    Service service = Mock() 
    service.method() >> returnedList 

    when: 
    def res1 = System.identityHashCode(service.method()) 
    def res2 = System.identityHashCode(service.method()) 
    def res3 = System.identityHashCode(service.method()) 

    then: 
    service.method().is(returnedList) 
    res1 == res2 
    res2 == res3 
}