2017-06-20 354 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

相关问题