2012-02-14 3 views
0

에서 동시에 "어디에서"블록과 도우미 방법을 사용할 수 있습니다는 나는 기본적으로 다음과 같습니다 사양이 스팍

def "my example specification"(){ 
given:"some mocked object which depends on a object created in the where clause" 
     def display = mockDisplay() 

and:"a activityt" 
     def activity = new ConfigActivity(display) 
when: 
     activity.doStuff() 
then: 
     1 * display.select() 

where: 
     dependency << new Dependency() 
} 


private mockDisplay() { 
     def display = Mock(ConfigActivity.Display) 
     display.addDependency(dependency) 
     return display 
} 

나는 "mockDisplay()"방법을 벗어나 있다는 것을 이해 범위에서 "where"절. 그러나 몇 가지 사양이 상용구 코드로 복잡 해지는 경향이 있으므로 (단순화 된 오프쇼어링이 아니라는 점에서) "주어진"문장을 재사용 할 수있는 방법이 필요하며 그렇게 할 때 Spock을 실제로 사용하고 싶습니다. " "조항도 있습니다.

이 것이 가능합니까? 아니면이 문제를 해결할 다른 방법이 있습니까?

답변

1

도우미 메서드에서 데이터 변수에 액세스하는 마법 방법은 없지만 메서드 매개 변수로 전달할 수 있습니다.

+0

개인 mockDisplay() 메소드의 서명을 private mockDisplay (의존성)로 변경하면 작동할까요? 나는 그것을 시도해 볼 것입니다. – Smithimage

+0

메소드 선언과 호출자를 모두 수정해야합니다. –

+0

네, 그게 맞아, 그 중 하나와 함께 helpt 나에게 컴파일러 종류 :) – Smithimage

관련 문제