私のgrailsアプリケーションでは、コントローラで、次のようなものを使用しています:
class SampleController {
def action1 = {
def abc = grailsApplication.getMetadata().get("xyz")
render abc.toString()
}
}
アプリの実行中に、application.properties からプロパティ「xyz」を正しく読み取り、正常に動作します。しかし、上記のコントローラーの単体テストケースを次のように書くと:
class SampleControllerTests extends ControllerUnitTestCase {
SampleController controller
protected void setUp() {
super.setUp()
controller = new SampleController()
mockController(SampleController)
mockLogging(SampleController)
}
void testAction1() {
controller.action1()
assertEquals "abc", controller.response.contentAsString
}
}
しかし、「grails test-app」を実行すると、application.properties からプロパティ「xyz」が取得され、期待どおりに返されることが期待されます。しかし、「No such property : grailsApplication」というエラーが表示されます。
わかりました。grailsApplication
オブジェクトをモックする必要があると思います。多くのオプションも試しましたが、それらはすべて機能しませんでした。
私はGrailsが初めてです。