模拟java中函数的输入

时间:2017-04-04 17:20:00

标签: java mockito

假设我们有一个函数将输入作为类对象obj。我们可以模拟来自obj的电话吗?

例如:

Class Library {
   public int methodA (Book obj) {
         int x = obj.getPages(); 
         return x+1;
  }
}

Class Book {
   int x = 10;
   public int getPages(){
      return x;
   }
}

我正在为methodA

编写测试用例
@InjectMock 
Library library;

@Test
public void testMethodA () {

   // mock the respnse of obj.getPages() call. 

   int x = library.methodA();

}

有没有办法模仿obj.getPages()

的回复

1 个答案:

答案 0 :(得分:3)

如果您只想模拟getPages()方法,则不需要模拟Library,只需Book。这样做:

Library library = new Library();
Book obj = Mockito.mock(Book.class);

Mockito.when(obj.getPages()).thenReturn(1); // return 1 or whatever value you want

int x = library.methodA(obj);

methodA()会调用obj.getPages(),这将返回您在thenReturn()

中配置的任何值