java - 如何模拟 junit 测试的结果元数据

标签 java spring-boot mockito junit4 maven-surefire-plugin

有一个使用结果元数据的函数。

    ResultSet rs // coming from some sql query.
    ResultSetMetaData rsmd = rs.getMetaData();
    if(rsmd.getColumnName(1).toString().equalsIgnoreCase("something"))
    {
    //do something here
    }

我以前模拟过结果集,但不知道如何模拟结果元数据或将所需的列名称放入结果集中? 我尝试过:

    ResultSetMetaData rsmd = Mockito.mock(ResultSetMetaData.class);
    Mockito.when(rsmd.getColumnName(1)).thenReturn("Somwthing");

但是没有成功

最佳答案

以下是您需要执行的操作的示例:

import org.mockito.Mockito;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;

public class Test {


    @org.junit.Test
    public void test() throws SQLException {

        // prepare the dependant mock
        ResultSetMetaData rsMetaMock = Mockito.mock(ResultSetMetaData.class);
        when(rsMetaMock.getColumnName(eq(1))).thenReturn("something");

        // prepare main mock for result set and define when 
        // main mock to return dependant mock
        ResultSet rs = Mockito.mock(ResultSet.class);
        when(rs.getMetaData()).thenReturn(rsMetaMock);

        // application logic
        ResultSetMetaData rsmd = rs.getMetaData();

        //assertions
        assertEquals(rsmd.getColumnName(1), "something");
    }
}

关于java - 如何模拟 junit 测试的结果元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60298649/

相关文章:

java - 必须从 Blob 上传回调请求中调用

java - 使用 firestore 在 for 循环中设置 boolean 值仅适用于列表中的一个对象

java - 使用mockito模拟返回ByteBuffer的方法的响应

java - 从树中返回值的字符串

java - sendRedirect 未按预期工作

maven - 运行 jar 文件时 spring boot 中的 java.lang.ClassNotFoundException - 添加了库

java - Spring 启动 : How to use WebClient instead of RestTemplate for Performing Non blocking and Asynchronous calls

java - 设计多对多关系抛出 org.springframework.beans.factory.BeanCreationException

Mockito doNothing with Mockito.mockStatic

android - Kotlin 将 getter 用于只读变量