2
을 조롱에 무슨 문제 :스팍이 인터페이스 다음 감안할 때
interface Bundle {
String getName()
String getVersion()
}
과 같은 방법 :
String log(Bundle b) {
return "${b.getName()}: ${b.getVersion()}"
}
이 스팍 테스트가 실패 : 여기
def "my test"() {
given:
def bundle = Mock(Bundle)
bundle.getName() >> "name"
bundle.getVersion() >> "1.0.0"
when:
def x = log(bundle)
then:
x == "name: 1.0.0"
1 * bundle.getName()
1 * bundle.getVersion()
}
오류입니다 :
condition not satisfied:
x == "name: 1.0.0"
| |
| false
| 8 differences (27% similarity)
| n(ull): (null-)
| n(ame): (1.0.0)
null: null
두 가지 확인 (1 * bundle.getName()
및 1 * bundle.getVersion()
)을 제거하면 테스트가 녹색으로 바뀝니다.
내 코드에 어떤 문제가 있습니까?
이 경우 여러 테스트 방법에서 사용되는 일반적인 조롱을 사용할 수 없습니다. 예를 들어, "setup"방법에서 조롱 상호 작용을 생성 한 다음 여러 테스트 방법에서 스터 빙합니다. 내가 맞습니까? – mhshams
당신은 모든 상호 작용을 오버라이드 할 수 있다는 점에서 옳습니다 (그리고 그것은'then' 블록에서 발생해야합니다). 비웃는 부분을 먼저 선언하고 스텁 부분을 나중에 선언 할 수 없습니다 (동일한 상호 작용의 경우). –