2014-02-25 2 views
0

일반적으로 Specs2 설탕이 첨가 된 Mockito 검증이 확인되고 적절할 경우 테스트가 실패합니다. 그러나 어떤 경우에는 무시됩니다.Mockito가 특성을 포함 할 때 내 Specs2 설탕에 절인 검증 단계를 무시합니다

일반적으로이 테스트 확인은 myApp가 myService를 한 번 이상 호출 했으므로 예상대로 실패합니다. 내 구성 요소로 케이크 패턴 특성을 손재주없는 것처럼

import org.specs2.mock.Mockito._ 

class MySpec extends Specification with Mockito { 
    "MyApp" should { 
    "blow up" in WithApplication { 
     val myService = mock[MyService] 
     val myApp = new MyApp(myService) 

     myApp.doSomething   

     there was no(myService).doSomethingElse 
    } 
    } 
} 

(! WithApplication이 재생입니다 프레임 워크 일을 참고)

그러나 내 테스트는 다음과 같습니다. MockRegistry 적 검증을 실패하지 않습니다이

trait MockRegistry extends Mockito with MyServiceComponent { 
    val myService = mock[MyService] 
} 

내 케이크 패턴 시험과 같이 보입니다

class MySpec extends Specification with Mockito { 
    "MyApp" should { 
    "blow up" in WithApplication with MockRegistry { 

     val myApp = new MyApp(myService) 

     myApp.doSomething   

     there was no(myService).doSomethingElse 
    } 
    } 
} 

. 나는 이것을 무엇이든 바꿀 수 있고 그들은 모두 무시 당한다.

there was no(myService).doSomethingElse 
there was one(myService).doSomethingElse 
there was two(myService).doSomethingElse 

그러나 sugared mockito 단계를 Java 메소드로 직접 호출하면 적절할 때 실패합니다.

import org.mockito.Mockito._ 

verify(myService, times(1)).doSomethingElse 

시험 방법에 따라 특성이 복잡해 보이는 것 같습니다.

답변

2

MockRegistryMockito 확장자는 실패한 경우 예외를 throw해야한다는 것을 알지 못하기 때문입니다. 그러나 SpecificationThrownExpectations 형질이 혼합되어 있으므로 은 Specification입니다.

그래서 당신도 MockRegistry에서 Mockito 확장을 제거하거나 그것에 ThrownExpectations를 추가 할 수 있습니다

trait MockRegistry extends MyServiceComponent { 
    val myService = mock(classOf[MyService]) 
} 

// or 
import org.specs2.matcher.ThrownExpectations 

trait MockRegistry extends MyServiceComponent with ThrownExpectations { 
    val myService = mock(classOf[MyService]) 
} 
0

예상대로 그것은 형질 때문이었습니다. 그것은 너무 많은 Mockito trait-ing 때문에 얼굴에 ...

내 사양은 mockito 특성을 가지고있었습니다. 내 케이크 패턴 조롱 된 구성 요소 레지스트리도 mockito 특성을했다. 테스트 방법에서 그들은 둘 다 객체의 일부 였고 Specs2/Mockito를 혼란스럽게 보입니다. 내 모의 구성 요소 레지스트리에서 Mockito 설탕을 제거하여

그래서 :

//import org.specs2.mock.Mockito._ 
import org.mockito.Mockito._ 

trait MockRegistry extends MyServiceComponent { 
    val myService = mock(classOf[MyService]) 
} 

그리고 만 사양에 Mockito 설탕은 내 설탕 검증을 다시 예상대로 작동하기 시작했다.