Grails 単体テスト クラスの特定のメソッドに System.property を直接設定することは可能ですか?
システム プロパティが Config.groovy に設定されている場合、いくつかのアクションをブロックする Filters クラスがあります。
class MyFilters {
def filters =
{
if ('true'.equals(System.properties.getProperty('myProperty', 'false'))){
writeFilter(controller: "myController", action: "update")
{
before =
{
response.sendError(HttpServletResponse.SC_FORBIDDEN);
return false;
MyControllerTests で、フィルターのテストを実装しようとしています。
void testMyFilter(){
System.properties.setProperty('myProperty', 'true')
withFilters(action:"update") {
controller.update()
}
assert response.status == HttpServletResponse.SC_FORBIDDEN
}
ただし、フィルター クラスはこの段階で (Config の既定の「false」プロパティ値を使用して) 既にモック化されているため、テストでプロパティを変更しても効果はありません。
これを回避する方法、またはプロップが変更された後に Grails に Filters クラスを強制的にリロードさせる方法はありますか? 他のコントローラー テストが壊れるため、Config の既定のプロパティを変更することはできません。これは、このプロップが設定される特定の環境向けであるため、フィルターが開始されることを確認するテストでシナリオをカバーしたいと考えています。
ありがとう。