2013-09-26 45 views
0

比方说,我有一个嘲笑特质富:specs2:有没有办法在使用Mockito的同时使用doNothing?

​​

,我嘲笑使用

val mockedFoo = mock[Foo] 

我想方法同前抛出一个异常我第二次调用它,例如这个接口

import org.specs2.mock.Mockito 
import org.specs2.mutable.Specification 

trait Foo { 
    def op(x: String): Unit 
} 

class DummySpec extends Specification with Mockito { 
    "dummy" should { 
    "test" in { 
     val mockedFoo = mock[Foo] 

     org.mockito.Mockito.doNothing().doThrow(new RuntimeException).when(mockedFoo).op(any[String]) 

     mockedFoo.op("This one should work fine") should not(throwAn[Exception]) 

     mockedFoo.op("This one should throw an exception") should throwAn[Exception] 
    } 
    } 
} 

有没有办法在specs2风格做到这一点?例如

mockedFoo.op(any[String]) returns Unit thenThrows new RuntimeException 

但这不能编译。

谢谢!

回答

4

Unit返回类型使事情有点棘手,因为你不能只是链:

returns "foo" thenThrows new RuntimeException 

但是如果你使用answers像下面你仍然可以解决这个问题:

mockedFoo.op(anyString) answers {args => } thenThrows new RuntimeException 

见如果这对你有用。

+0

是的,似乎工作。非常感谢! – Emre

相关问题