2015-10-19 97 views
0

我正在將2.4.3的grails應用程序升級到3.0.8。 有很多集成測試正在使用grails.util.GrailsWebUtil.bindMockWebRequest(grailsApplication.mainContext)以下調用controller.method。但我發現grails.util.GrailsWebUtil不再包含bindMockWebRequest方法,好像它已被替換爲grails.util.GrailsWebMockUtil,好吧,但是在控制器中聲明的所有服務都是沒有被注入類。我可以使用grails.test.spock.IntegrationSpec,但該類也已從grails3中刪除。有一個suggestion使用功能測試來進行控制器的集成測試,但是這個解決方案對我來說不起作用,我並不是很想將所有這些測試作爲功能實現,或者手動將依賴項注入到控制器實例中,我該如何解決它?控制器集成測試grails3:服務沒有注入

+0

'ConfigurableApplicationContext ctx =(ConfigurableApplicationContext)grailsApplication.getMainContext(); 。 ctx.getBeanFactory()autowireBeanProperties(控制器, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME,FALSE);' - 可能是一個解決方案 – airfox

+0

下面是如何編寫集成測試與Grails的控制器3 http://nimavat.me/blog一個完整的例子/ grails3控制器集成 - 測試 - 例如 –

回答

0

使用grails.test.mixin.integration.Integration註釋而不是grails.test.spock.IntegrationSpec類擴展名。

並將集成測試移至src/integration-test/groovy

0

我從Grails 2.5.1升級到3.2.4。我的一個集成測試找不到使用def xxxService注入的服務。我將服務包含在@Mock列表中。 XxxServiceIntegrationSpec擴展了規範。

我知道這不太相關測試控制器,但也許它有幫助嗎?

0

我們在舊的grails 2.x應用程序中使用了控制器集成的dozones。當我們遷移到grails 3時,我們想保留它,不能拋出它們並從頭開始編寫功能測試。

在這裏,我在博客它Integration testing controllers with Grails 3

的基本步驟是 - 設置模擬請求和響應 - 設定電流控制器名稱 - 其餘模擬請求並在測試

見的端部響應以上博客文章爲一個完整的例子。

希望它有幫助。