日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spock 集成测试_使用Spock Mocks进行Grails 3.3集成测试

發布時間:2023/12/3 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spock 集成测试_使用Spock Mocks进行Grails 3.3集成测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spock 集成測試

在Grails單元測試中,可以輕松使用Grails隨附的Spock框架來模擬或存根協作者(例如服務)。

“ 測試”一章對模擬協作者, doWithSpring / doWithConfig回調方法,在測試中模擬bean的FreshRuntime批注進行了一些解釋,但是它們主要用于單元測試 。

在集成測試中模擬bean怎么樣?

如果我們有控制器怎么辦

class AnimalRegistrationController {AnimalRegistrationService animalRegistrationServicedef arrival(ArrivalCommand arrival) {animalRegistrationService.registerArrival(arrival).map { ArrivalErrorMessage aem ->renderErrors(aem)}.orElse {render status: 200}} }

哪個調用了服務,哪個調用了存儲庫–這可能會執行您不想在集成測試中發生的外部調用。

class AnimalRegistrationService {ArrivalRepository arrivalRepositoryOptional registerArrival(Arrival arrival) {arrivalRepository.registerArrival(arrival)}}

以前,我曾寫過Grails 3.3具有Spock 1.1的特性 ,它為我們提供了一些新功能,例如java.util.Optional的默認答案…但它給了我們更多的好處!

1. DetachedMockFactory和TestConfiguration

現在,我們還有一個DetachedMockFactory ,可用于在Specification外部(例如在Spring配置中)外部的層次結構之外聲明模擬。

我被觸發這篇文章中關于Spring集成測試,我把它調整到工作的Grails 3.3 -這是基于 Spring的引導,但并沒有完全使用所有我們在香草 Spring應用程序中使用了Spring的注解。

因此,我們使用DetachedMockFactory在src/test/groovy創建了一個專門用于測試的配置,例如

import spock.mock.DetachedMockFactory import org.springframework.boot.test.context.TestConfiguration import org.springframework.context.annotation.Bean ...@TestConfiguration class TestRepositoryConfig {private DetachedMockFactory factory = new DetachedMockFactory()@BeanArrivalRepository arrivalRepository() {factory.Mock(ArrivalRepository)} }

2.整合測試

現在,通過使用@Autowired 按類型注入模擬的bean,可以在Grails 3集成測試中使用模擬的bean。 我們可以照常創造期望。

@Integration class ArrivalApiIntegrationSpec extends Specification {@Value('${local.server.port}')Integer serverPort@AutowiredArrivalRepository mockedArrivalRepositoryvoid "should create an arrival"() {given:1 * mockedArrivalRepository.registerArrival(_) >> {Optional.empty()}when:def response = new RestBuilder().post('http://localhost:{serverPort}/api/arrivals') {urlVariables([serverPort: serverPort])json {animalId = 1date = '2017-01-01'}} then:response.status == 200} }

3.依賴

為了使上述方法起作用,您實際上必須引入一個基本的spock-lang依賴關系。

將其添加到您的build.gradle

dependencies {...testCompile 'org.spockframework:spock-core:1.1-groovy-2.4'testCompile 'org.spockframework:spock-spring:1.1-groovy-2.4'

八大兵 完成。

而已

現在,我們已經完全控制了模擬豆,就好像我們在進行單元測試一樣。

翻譯自: https://www.javacodegeeks.com/2017/07/grails-3-3-integration-testing-spock-mocks.html

spock 集成測試

總結

以上是生活随笔為你收集整理的spock 集成测试_使用Spock Mocks进行Grails 3.3集成测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。