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集成测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迈克菲怎么卸载 迈克菲卸载到一半不动了
- 下一篇: 360电脑省电软件(360电脑省电软件哪