2014-09-17 2 views
4

ContactForm 개체와받는 사람이있는 맵을받는 방법이 있습니다.조롱을 통한 데이터 기반 테스트

def "Correct recipients for first inquiry"() { 
    setup: 
    def form = Mock(ContactForm) 
    form.getInquiry() >> "Subject 1" 

    expect: 
    sut.getRecipients(form, recipientsTestMap) == ["recipient1"] 
} 

def "Correct recipients for second inquiry"() { 
    setup: 
    def form = Mock(ContactForm) 
    form.getInquiry() >> "Subject 2" 

    expect: 
    sut.getRecipients(form, recipientsTestMap) == ["recipient2"] 
} 

// and so on ... 

이 할 수있는 데이터 중심의 방법이 있나요 : 그래서지도에서 올바른받는 사람이 양식의 조회에 따라 반환됩니다 다음과 같은 사양을 썼다? 불행하게도 폼을 전달하지 않고 질의 문자열 자체는 옵션이 아닙니다. 엄청난 리팩토링이 필요하기 때문입니다. 각 테스트 전에 mock을 변경해야하지만 Spock이 데이터 기반으로이 작업을 수행 할 수 있는지 궁금합니다. (이것은 당신이 요청하는 것입니다 있는지 확실하지 않습니다)

답변

6

다음과 같은 방법으로이 작업을 수행 할 수 있습니다

@Unroll 
def "Correct recipients for #inquiry inquiry"() { 
    setup: 
    def form = Mock(ContactForm) 
    form.getInquiry() >> inquiry 

    expect: 
    sut.getRecipients(form, recipientsTestMap) == result 

    where: 
    inquiry  | result 
    "Subject 1" | ["recipient1"] 
    "Subject 2" | ["recipient2"] 
} 
+0

예, 대단히 감사합니다! 이 부분을 설치 부분에서 사용하는 것이 가능하지는 않은지 알 수 있습니다. –

+0

여러분을 환영합니다! – Opal

관련 문제