簡體   English   中英

如何模擬一些 object 的方法調用,這些方法調用在 JUnit 測試下作為方法的方法參數傳遞

[英]How to mock method calls of some object which is passed as method parameter of method under JUnit Test

我正在為一些我無法更改的舊版 class 寫 JUnit。 我面臨的問題如下

public class B{
public String method2() {
    //fetch some data from database and return it
}

}

public class A{
public String myMethod(B b) {
    return b.method2();
}

}

如何使用 mockito 在 junit 中模擬對 method2 的調用

public class B2 extends B { // so, this is, in fact, an IS-A of B
  public String method2() {
    return "mockedResult";
  }
}

在您的測試中,您現在將擁有如下內容:

@Test
public void testMethod() {
  A toTest = new A();
  assertEquals("mockedResult", toTest.myMethod(new B2());
}

這是非常簡單的方法。 但我建議閱讀 Mocking 框架,例如 Mockito 以獲得更復雜的場景。

https://www.baeldung.com/mockito-series

通過使用 Mockito,簡而言之,它會是這樣的:

public class TestClass {

  @Mock
  private B b;

  private A toTest = new A();

  @Test
  public void testMethod() {
    when(b.method2()).thenReturn("mockedResult");
    assertEquals("mockedResult", toTest.myMethod());
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM