2017-06-20 49 views
1
req1(an object of request type 1) 
req2(an object of request type 2) 


    class response{ 
     public TxnResp txnResp(){ 
      TxnResp txnResp = service.txn(req1 , req2); 
      return txnResp; 
     } 
    } 

我在使用Powermockito來模擬我的junit測試。如何在Java中使用PowerMockito模擬一個接口

「txn」是一個接口。我需要模擬這條線TxnResp txnResp = service.txn(req1 , req2);我的測試課。因爲調用txn正在從webservice返回一些值,這些值在下一行中指定。

txnResp包含以下值storeNo,retailerId和密碼。它有自己的豆類,所以我們可以設置值如txnResp.setStoreId(1);

任何人都可以幫助我模擬上述接口'txn'並返回值爲txnResp

我被困在最後5小時裏面。任何幫助將不勝感激。

+0

這是什麼意思:*「TXN」是一個接口*? 'txn'顯然是一種「服務」的方法。你的意思是說有一些接口,例如'Txn','txn'是該接口的*方法*? –

+0

yes!txn是該接口的一種方法。 – Miller

回答

2

在我看來,普通Mockito就足夠你的情況。

如果service是注入的依賴(通過構造,即制定者),你可以嘗試一些如下:

public class ResponseTest{ 

    @InjectMocks 
    private Response response; 

    @Mock 
    private Service serviceMock; 

    @Before 
    public void init(){ 
     MockitoAnnotations.initMocks(this); 
    } 

    @Test 
    public void test(){ 
     // Arrange 
     TxnResp txnResp = new TxnResp(...); 

     Mockito.doReturn(txnResp).when(serviceMock).txn(
      Mockito.any(ReqType1.class), Mockito.any(ReqType2.class)); 

     // Act and assert...  
    } 
} 
+0

當條件是什麼時,我能知道什麼是「serviceMock」嗎? – Miller

+0

其mockito管理的服務實例 –

+0

PowerMockito.spy(Response.class); PowerMockito.doReturn(txnResp).when(Service.class,「txn」,Matchers.anyObject(),Matchers.anyObject()); 這就是我在我的測試課中所做的,但它不是擅長的。 – Miller

相關問題