java - 如何在 Java 中使用 PowerMockito 模拟接口(interface)

标签 java unit-testing junit mockito powermockito

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;
       }
    }

我在 junit 测试中使用 Powermockito 进行模拟。

“txn”是一个接口(interface)。我需要模拟这一行 TxnResp txnResp = service.txn(req1 , req2); 我的测试类。因为调用 txn 会从 Web 服务返回一些值,这些值在下一行中指定。

txnResp 包含以下值 storeNo、retailerId 和密码。它有自己的 bean 类,因此我们可以设置诸如 txnResp.setStoreId(1);

之类的值

有人可以帮我模拟上述接口(interface)“txn”并将值返回给txnResp吗?

过去 5 个小时我都被困在其中。任何帮助将不胜感激。

最佳答案

在我看来,简单的 Mockito 对于您的情况就足够了。

如果 service 是注入(inject)的依赖项(通过构造函数,即 setter),您可以尝试以下操作:

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...      
   }
}

关于java - 如何在 Java 中使用 PowerMockito 模拟接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44653717/

相关文章:

java - 加载资源时"URI is not hierarchical"

java - Jackson 2.6.3 反序列化避免文字 null 添加到集合中

java - 检测图中的所有圆圈

python - 如何为 Python socketserver 请求处理程序编写单元测试?

ios - 带有静态库的项目中的 KIF

java - Spring Application Context - 主文件夹和测试文件夹

java - 为什么 RunListener 类 testRunStarted() 方法在 JUnit 中多次调用单个测试?

java - 在字符串集合中使用通配符搜索

java - 如何为 StrutsTestCase 配置 pom 以便找到 web.xml?

javascript - JavaScript 中自定义错误消息的单元测试