2015-12-02 121 views
0

我正在使用Mockito编写简单的单元测试。Mockito:将模拟对象作为参数传递给函数(调用函数时)

我有一个功能测试:

public void doSomething() { 
    foo.getStudent(new School()); 
} 

我的测试用例:

@Test 
public void testDoSomething() { 
    Foo mockedFoo = Mockito.mock(Foo.class); 
    School mockedSchool = Mockito.mock(School.class); 
    // I want to pass the mocked school as parameter when food.getStudent(school) is called 
    // how to pass mocked school to method? 
    when(mockedFoo.getStudent(???)) 

    // run the method under test 
    myService.doSomething(); 
} 

我想通过mockedSchool作为参数时foo.getStudent(school)被调用时,如何在声明的Mockito这个?

似乎Mockito只有when(...).thenReturn(),但有没有像when(...).thenPassArgument(mockedObject)

回答

0

问题在于你在doSomething方法中实例化School类的方式;当你在现场实例化它时,你不能用模仿使用mockito来重载那个实例化。

如果您将它作为doSomething的参数传递,您应该可以执行此操作。

我相信PowerMock可以帮助你,如果你想超载内部建设。

0

当你不需要断言到School实例,只是传递一个嘲笑实例作为一个参数,你可以做到以下几点:

mockedBar.getStudent(Mockito.isA(School.class)); 

请阅读有关isA(java.lang.Class<T> clazz)methodMockito文档。

+1

这两个链接都死了,请你更新。 –

相关问题