Junit Mockito:将模拟对象作为参数传递给函数(调用函数时)

Junit Mockito:将模拟对象作为参数传递给函数(调用函数时),junit,mockito,Junit,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

我正在使用编写一个简单的单元测试

我有一个功能要测试:

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();
}
我想在调用
foo.getStudent(school)
时将
mockedSchool
作为参数传递,如何在Mockito中声明


似乎Mockito只有
when(…).thenReturn()
,但是否有类似
when(…).thenPassArgument(mockedObject)

问题在于你用doSomething方法实例化学校班级的方式;当您在现场实例化它时,您不能使用mockito使用mock重载该实例化

如果您将其作为doSomething的参数传递,您应该能够执行此操作


我相信,如果您想让内部结构过载,PowerMock可以帮助您。

问题在于您用doSomething方法实例化学校类的方式;当您在现场实例化它时,您不能使用mockito使用mock重载该实例化

如果您将其作为doSomething的参数传递,您应该能够执行此操作


我相信,如果您想重载内部构造,PowerMock可以帮助您。

由于您不需要在
School
实例中断言,只需将模拟实例作为参数传递,您可以执行以下操作:

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

请阅读有关
isA(java.lang.Class clazz)

的文档,因为您不需要在
School
实例中断言,只需将模拟实例作为参数传递,您可以执行以下操作:

mockedBar.getStudent(Mockito.isA(School.class));
请阅读有关
isA(java.lang.Class clazz)
的文档