我在src/groovy
測試Grails的控制器具有來自SRC豆/常規
class Something {
def foo
}
這是resources.groovy
beans = {
mySomething(Something)
}
在我的控制器類我用這個:
class MyController {
def mySomething
def index() {
mySomething.foo = "bar"
render mySomething.foo
}
}
我該如何測試?
@TestFor(MyController)
class MyControllerSpecification extends Specification {
def "test bean"
given:
controller.mySomething = new Something() //is this the best way?
when:
controller.index()
then
response.contentAsString == "bar"
}
問題
這是測試的最佳方式?我通常會看到爲類創建的Mocks。 Mocks有什麼好處,我應該在這裏使用它們嗎?
+1。 'defineBeans'是另一種方式,但在Grails 2.2.2之前,如果使用'grailsApplication.mainContext.getBean()',你的模擬bean沒有在主要上下文中註冊。 –
我記得你的[建議改進](http://jira.grails.org/browse/GRAILS-9980)我的朋友。感謝您提出這個問題。 :) – dmahapatro
一旦將它分配給'controller'成員,我幾乎不會從'mainContext'獲取bean。因爲在這種情況下,它在'src/groovy'我假定沒有交易涉及,但是是的改善是有幫助的。 – dmahapatro