簡體   English   中英

模擬類的非靜態方法

[英]Mock non static method of a class

我正在嘗試使用存根編寫測試,但嘲笑其中一種方法並沒有按預期發生。

class A {
 public static getInstance(){
  return new A();
 }
 public String getConn(){
 return "Hello";
 }
}

class B {
 public String createConn(){
  A instance  = A.getInstance();
  return instance.getConn();
 }
}

我的測試課:

@RunWith(PowerMockRunner.class)  
@PrepareForTest(A.class) 
public class TestClassB{  

  @Spy 
  B classB = new B();  

  @Test 
  public void testConn(){  

      PowerMockito.mockStatic(A.class);  
      given(A.getConn()).thenReturn("Welcome");  
      assertEquals("Welcome", classB.createConn()); 
  }

我想在 B 類上創建一個測試, createConn方法,當我獲得連接時,我想使用 mockito 接收“歡迎”而不是“Hello”?

我找到了問題的解決方案。

  PowerMockito.mockStatic(A.class);
  PropertyManager mock = PowerMockito.mock(A.class);
  given(A.getInstance()).willReturn(mock);
  given(mock.getConn()).willReturn("Welcome");
  assertEquals("Welcome", classB.createConn()); 

暫無
暫無

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

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