2013-02-19 4 views
3

일부 데이터를 목록에 채우는 메서드가 있다고 가정하고 내부적으로 하나의 메서드를 호출합니다.이 메서드는 독립적으로 테스트 중이며 일부 데이터는 그 목록. 여기서 가장 좋은 테스트 방법은 무엇입니까?다른 메서드를 호출하는 메서드에 대한 spock 테스트 케이스를 작성하는 방법

외부 메서드 테스트 방법? 내부 메서드에서 데이터를 검사해야합니까? 그렇지 않으면 외부 메서드로 채워진 데이터 만 테스트해도 괜찮습니까? 시험 다음 클래스 감안할 때

답변

5

:

 
class MyTestClass { 
    int getAPlusB() { return getA() + getB() } 
    int getA() { return 1 } 
    int getB() { return 2 } 
} 

내가 산술이 올바른지 확인하려면 다음 스팍 테스트를 작성할 수 있지만, 또한이 getA()getB() 실제로 getAPlusB()에 의해 호출됩니다

def "test using all methods"() { 
    given: MyTestClass thing = Spy(MyTestClass) 
    when: def answer = thing.getAPlusB() 
    then: 1 * thing.getA() 
      1 * thing.getB() 
      answer == 3 
} 

지금까지는 getA와 getB가 호출 된 것으로 확인되었지만 해당 메소드의 코드가 실제로 실행되는 세 가지 메소드 모두에서 모든 코드가 실행 중입니다. 귀하의 경우, 당신은 별도로 내부 방법을 테스트하고 있으며,이 시험을하는 동안 당신은 그들을 호출하고 싶지 않을 것입니다.

def "test which stubs getA and getB"() { 
    given: MyTestClass thing = Spy(MyTestClass) 
    when: def answer = thing.getAPlusB() 
    then: 1 * thing.getA() >> 5 
      1 * thing.getB() >> 2 
      answer == 7 
} 
: 스팍 스파이를 사용하여, 당신은 그러나 당신이 반환 된 값을 지정하려면 특정 방법을 스텁의 옵션을 테스트중인 클래스의 실제 인스턴스를 인스턴스화 할 수 있습니다
관련 문제