1. 程式人生 > >spring跨層mock,並且驗證被mock的函式的實參. 傳遞的是bean

spring跨層mock,並且驗證被mock的函式的實參. 傳遞的是bean

  官方文件: http://jmockit.github.io/tutorial/Mocking.html#singleInvocationCapture

學習: 

https://bowenli86.github.io/2016/04/17/test/jmockit/Unit-Test-JMockit-Capturing-Invocation-Arguments-for-Verification/

官方文件翻譯 

/**
 * spring跨層mock,並且驗證被mock的函式的值. 這個非常適合整合mock測試驗證使用.
 *
 * @sina weibo [email protected]
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:jdktest/jmockit/application-context.xml")
public class ServiceTest {

    @Mocked
    Remote remote;

    @Autowired
    Service service;

    @Test
    public void testDoFuncYes() {
        service.doFunc(true, 3);
        new Verifications() {
            {
                System.out.println("doSomething 1 begin");

                //remote.doSomething(anyInt);//表示這個方法會被執行

                ParameterBean bean = new ParameterBean(1);

                remote.doSomething(bean = withCapture());
                Assert.assertEquals(1, bean.num);
                times = 1;//呼叫次數,0表示上面方法不會被呼叫

                // 表示這個方法會被執行,而且引數是1;在當前case,會通過
                //remote.doSomething(2);//表示這個方法會被執行,而且引數是2;在當前case,這個會不被通過

                System.out.println("doSomething 1");

            }
        };
    }

    

    @org.springframework.stereotype.Service
    private static class Remote {
        public void doSomething(ParameterBean a) {
        }
    }

    public static class ParameterBean {
        public int num = 0;

        public ParameterBean(int a) {
            this.num = a;
        }
    }

    @org.springframework.stereotype.Service
    private static class Proxy {
        @Autowired
        Remote remote;

        public void doFuncProxy(ParameterBean p) {
            remote.doSomething(p);
        }
    }

    @org.springframework.stereotype.Service
    private static class Service {
        @Autowired
        private Proxy remote;

        public void doFunc(boolean flag, int a) {
            if (flag) {
                remote.doFuncProxy(new ParameterBean(a));
            }
        }
    }

}  


相關推薦

springmock,並且驗證mock函式. 傳遞的是bean

  官方文件: http://jmockit.github.io/tutorial/Mocking.html#singleInvocationCapture學習: https://bowenli86.github.io/2016/04/17/test/jmockit/Unit

Mockito結合spring進行 mock

對接 jmockit @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="classpath:/proxy-services.xml") public class Order

編寫自己的Matcher與如何讓編譯器識別mock的過載函式

本文目的 gmock框架中自帶Matcher只針對c++內建型別,如string,int,float等等,有時候無法滿足專案要求,所以需要編寫自己的Matcher物件。本文介紹如何使用gmock提供的Matcher巨集快速編寫自己的Matcher物件。 在

spring boot + shiro 登錄驗證

real ron 身份驗證 style feedback red ack ide color form提交 <form th:action="@{/login}" method="POST"> <d

spring mvc實現登錄驗證

period nbsp def fine 顯示 pin asi sin current 一、實現圖形驗證碼的基礎類 VerifyCodeUtils.java,這個類是從網上摘抄的~ package com.comp.common; import java.aw

前端頁面給指定的div添加遮罩並且帶有加載中的小旋轉圖片

left 說了 -s 加載 jquer 其中 ges loading style 話不多說,先上代碼,其實還是比較簡單的 1 $("<div id=‘shade‘ style=‘opacity:0.85;background:white‘></div

階馬由無社照節意是速手濟計但高通

ptr upm xor caff b2c cad acf c11 bbf 敬祭掠稼酵KGD遺顏認坊http://baobao.baidu.com/article/08abd83ea9f90cee888c3e65e38f11a9.html?n8hx/20171004/4e

django:DateTimeField如何自動設置為當前時間並且修改 ——django日期時間字段的使用

種類 log true 分享圖片 www. 技術分享 djang 默認值 http 創建django的model時,有DateTimeField、DateField和TimeField三種類型可以用來創建日期字段,其值分別對應著datetime()、date()、

使用IDEA 開發Spring,Maven-->並且部署到 tomcat

創建 https mave nsh div 兩個 detail ring shu 參考兩個博客: 1.如何創建Spring MVC項目。https://www.jianshu.com/p/2101d176555b 2. 如何部署。http://blog.csdn.net/a

layui彈出layer過大遮擋解決辦法-resize事件自動調整

思路 pla title 位置 相關 無法 dex 前端 情況 遇到的問題 ??最近在使用layui做一個管理系統,由於前端技術有限,在開發過程中也遇到這樣那樣的問題,即比較簡單的問題有時也要搞半天。。??layer彈出窗口在彈出時指定了area,彈出後,如果當前頁面(if

js打開新窗口並且攔截

打開 廣告 超鏈接 onclick del element .cn for timeout window.open是javascript函數,該函數的作用是打開一個新窗口或這改變原來的窗口,如果你直接在js中調用window.open()函數去打開一個新窗口,瀏覽器會攔截你

spring MVC 使用 hibernate validator驗證框架,國際化配置

dex erp fault reg path api turn regex oca spring mvc使用hibernate validator框架可以實現的功能: 1. 註解java bean聲明校驗規則。 2. 添加message錯誤信息源實現國際化配置。 3.

redis jwt spring boot spring security 實現api token 驗證

BE output date art parent byte[] web rmi time 文章地址:http://www.haha174.top/article/details/258083 項目源碼:https://github.com/haha174/jwt-toke

【死磕 Spring】----- IOC 之 獲取驗證模型

close 步驟 call buffere n) 規範 frame create ring 原文出自:http://cmsblogs.com 在上篇博客【死磕Spring】----- IOC 之 加載 Bean 中提到,在核心邏輯方法 doLoadBeanDefinit

Spring Security簡單的登陸驗證授權

end 黑板 其中 ack ryu ssa enable 靈活 else Spring Security的介紹就省略了,直接記錄一下登陸驗證授權的過程。 Spring Security的幾個重要詞 1.SecurityContextHolder:是安全上下文容器,可以在此得

事務(進程 ID 64)與另一個進程死鎖在 鎖 資源上,並且選作死鎖犧牲品。

設置 ltp 實現 完整 可能 死機 使用 完全 特殊 訪問頻率比較高的app接口,在後臺寫的異常日誌會偶爾出現以下錯誤。 事務(進程 ID 64)與另一個進程被死鎖在 鎖 資源上,並且已被選作死鎖犧牲品。請重新運行該事務 實所有的死鎖最深層的原因就是一個:資源競爭

事務(程序 ID 64)與另一個程序死鎖在 鎖 資源上,並且選作死鎖犧牲品。

訪問頻率比較高的app介面,在後臺寫的異常日誌會偶爾出現以下錯誤。 事務(程序 ID 64)與另一個程序被死鎖在 鎖 資源上,並且已被選作死鎖犧牲品。請重新執行該事務   實所有的死鎖最深層的原因就是一個:資源競爭  表現一:     一個使用者A 訪問表A(

Spring 域問題CORS (Cross Origin Resources Share)

nbsp response ise ride efault -h @override jks ons 1、Spring給我們提供了三種跨域方法 CorsFilter 過濾器 CorsConfiguration Bean @CrossOrigin 註解 2、CorsFil

java spring 實現登入頁面新增驗證

from 表單: <div class="block">     <p class="block-heading">使用者登入</p>     <div class="blo

spring boot 使用 hibernate validator驗證框架

之前寫小專案時,遇到前後端互動資料,每次都要對每個欄位進行格式驗證,而且驗證的步驟和程式碼大都是千篇一律。今天接觸到了hibernate validator驗證框架,今後就能擺脫這種煩人的情況了。 hibernate validator的依賴在spring-boot-starter-we