模拟实例激发事件



我有一个要单元测试的类,它有一个依赖项Foo,我想模拟它。此类Foo有时会在调用某个方法时引发事件。但不知道如何嘲笑班上的福得到这种行为。

那么,我怎么能嘲笑Foo类,它的行为就像下面的代码一样呢?到目前为止,我使用了Mockito,但如果Mockito不能提供所需的功能,我会对新的框架开放。

//This is how the class Foo should act when it is mocked
public class Foo()
{
    private Listener listener;
    public void addListener(Listener listener)
    {
        this.listener = listener;
    }
    public void callMethodWhichMayFireAnEvent()
    {
        listener.event();
    }
}

要得到你想要的(可能是也可能不是你真正需要的),你可以使用答案。。。

   final Listener listener = ...; // put your listener here
   Foo fooMock = Mockito.mock(Foo.class);
   Mockito.doAnswer( new Answer() {
    @Override
    public Object answer(InvocationOnMock invocation) throws Throwable {
        listener.event(); // this calls your listener
        return null; // actual Method is void, so this will be ignored anyway
    }
   }).when( fooMock.callMethodWhichMayFireAnEvent() );

因此,无论何时调用fooMock.callMethodWhichMayFireAnEvent(),它都会调用listener对象的event()方法。

相关内容

  • 没有找到相关文章

最新更新