您好,登錄后才能下訂單哦!
這篇文章主要介紹了spock框架中測試樁怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
when: int a = 12; int b = xxxService.squre(a); int c = xxxService.plus(a, b); then: c == 100
假如我們需要測試以上代碼,但被告知squre方法目前還沒開發完成,或者正在修改中,現在使用無法得到正確的結果。
這時就可以用測試樁:給squre()方法造一個或多個假的返回值,讓我們能夠正常測試后面的plus()方法。
測試樁Stub與Mock的具體解釋在后面代碼注釋中做了說明。
package com.yawn.spock import com.yawn.spock.service.CalculateInterface import com.yawn.spock.service.CalculateService import spock.lang.Specification /** * <pre> * * Stub與Mock * (1)相同點 * Stub和Mock對象都是用來模擬外部依賴,使我們能控制。 * 如果被測程序、系統或對象,我們稱之為A。在測試A的過程中, * A需要與程序、系統或對象B進行交互,那么Stub/Mock就是用來模擬B的行為來與A進行交互。 * (2)不同點 * Stub,也即“樁”,很早就有這個說法了,主要出現在集成測試的過程中, * 從上往下的集成時,作為下方程序的替代。作用如其名,就是在需要時, * 能夠發現它存在,即可。就好像點名,“到”即可。 * Mock,主要是指某個程序的傀儡,也即一個虛假的程序, * 可以按照測試者的意愿做出響應,返回被測對象需要得到的信息。 * 也即是要風得風、要雨得雨、要返回什么值就返回什么值。 * * 總體來說,stub完全是模擬一個外部依賴,用來提供測試時所需要的測試數據。 * 而mock對象用來判斷測試是否能通過,也就是用來驗證測試中依賴對象間的交互能否達到預期。 * </pre> * @author yawn * 2019/6/10 14:52 */ class MockSpec extends Specification { def "mock 測試樁"() { given: "構造測試樁" CalculateInterface calculateService = Stub(CalculateInterface) calculateService.plusPlus(_) >> 1 when: int x = calculateService.plusPlus(12) int y = calculateService.plusPlus(3) then: x == 1 y == 1 } def "mock 測試樁得到不同的多個值"() { given: "構造測試樁" CalculateService calculateService = Stub(CalculateService) calculateService.plusPlus(_) >>> [1, 2, 3] when: int x = calculateService.plusPlus(12) int y = calculateService.plusPlus(3) int z = calculateService.plusPlus(2) then: x == 1 y == 2 z == 3 } }
使用Stub與Mock方法就可以得到對應的傀儡實例,我們可以對這個 傀儡 實例定義其方法的返回值。
calculateService.plusPlus(_) >> 1 // 定義了一個返回值
calculateService.plusPlus(_) >>> [1, 2, 3] // 定義了多個返回值,每次執行,按照順序取一個作為返回值。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“spock框架中測試樁怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。