第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 Mockito 模擬 Spring 的 JdbcTemplate.query

如何使用 Mockito 模擬 Spring 的 JdbcTemplate.query

青春有我 2022-11-10 15:08:57
我想知道如何使用 Mockito 模擬特定代碼:List<Map<String, Object>> list = jdbcTemplate.queryForList(    sqlQuery,     new Object[] { inflowId });我嘗試了以下代碼:Mockito.doReturn(list)       .when(jdbcTemplate)       .queryForList(Mockito.anyString(), Mockito.any(Class.class));和:when(    jdbcTemplate.queryForList(Mockito.anyString(), Mockito.any(Object[].class))).thenReturn(list);我的問(wèn)題是特定方法在 JUnit 中沒(méi)有被嘲笑。調(diào)用該方法時(shí),它會(huì)返回null,而它應(yīng)該返回列表。
查看完整描述

2 回答

?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

這應(yīng)該有效:


import org.hamcrest.CoreMatchers;

import org.junit.Assert;

import org.junit.Test;

import org.mockito.ArgumentMatchers;

import org.mockito.Mockito;

import org.springframework.jdbc.core.JdbcTemplate;


import java.util.ArrayList;

import java.util.List;

import java.util.Map;


public class DemoTest {


    @Test

    public void mockJdbcTemplate() {

        JdbcTemplate mockTemplate = Mockito.mock(JdbcTemplate.class);


        List<Map<String, Object>> mockResult = new ArrayList<>();


        Mockito.when(mockTemplate.queryForList(Mockito.anyString(), ArgumentMatchers.<Object>any())).thenReturn(mockResult);

        // Alternatively:

        // when(mockTemplate.queryForList(anyString(), Mockito.<Object>any())).thenReturn(mockResult);


        String query = "some query";

        Object[] params = new Object[]{1};


        List<Map<String, Object>> returnedResult = mockTemplate.queryForList(query, params);


        Assert.assertThat(returnedResult, CoreMatchers.sameInstance(mockResult));

    }


}

訣竅是使用ArgumentMatchers.<Object>any(),因?yàn)橛卸喾NqueryForList方法實(shí)現(xiàn),我們要模擬的方法接收一個(gè)可變參數(shù)。


查看完整回答
反對(duì) 回復(fù) 2022-11-10
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

以下代碼我與spring boot一起使用,mockito


/** class on which uni test is driven **/

public class Decompile {



    @Autowired

    private JdbcTemplate jdbcTemplate;


    public List<Map<String, Object>> getRunner()

    {

        try{

            return jdbcTemplate.queryForList("select * from users");

        } 

        catch (Exception e) {

            System.err.println(e);

        }

        return null;

    }


}

單元測(cè)試用例開始


/** Unit test case for above class **/

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.mockito.InjectMocks;

import org.mockito.Mock;

import org.mockito.Mockito;

import org.mockito.MockitoAnnotations;

import org.mockito.junit.MockitoJUnitRunner;

import org.springframework.jdbc.core.JdbcTemplate;


@RunWith(MockitoJUnitRunner.class)

public class DecompileTest {


    @Mock/* works fine with autowired dependency too */

    JdbcTemplate jdbcTemplate;


    @InjectMocks/* for the claa that we are mocking */

    Decompile testclass;


    @Before

    public void setUp() throws Exception {

        MockitoAnnotations.initMocks(this);

    }


    @Test

    public void testgetRunner() {

        List<Map<String, Object>> expectedresultList  = new ArrayList<>();

        Mockito.lenient().when(jdbcTemplate.queryForList("select * from users.. ")).thenReturn(expectedresultList);

        List<Map<String, Object>> response = testclass.getRunner();

    }


}

mvn 包使用如下(兼容 spring 版本> 2)


<dependency> 

    <groupId>org.springframework.boot</groupId> 

    <artifactId>spring-boot-test</artifactId> 

    <scope>test</scope> 

</dependency> 


<dependency>

    <groupId>org.springframework.boot</groupId> 

    <artifactId>spring-boot-starter-test</artifactId> 

    <scope>test</scope> 

</dependency> 


查看完整回答
反對(duì) 回復(fù) 2022-11-10
  • 2 回答
  • 0 關(guān)注
  • 501 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)