0

サービスクラスの単体テストを作成中です。このサービス クラスは を呼び出しますMyDomain.findAllByIdNotInList。私が直面している問題は、grails が NotInList をモック ドメインの動的ファインダーとして認識しないことです。この機能をメタクラス化しようとしましたが、問題がありました。

単体テストを統合テストに変えるというこの短所を回避するための創造的な方法はありますか? 複数の理由でこれを避けたい (実行時間、ビルド時に単体テストのみが実行されるなど)

また、メタクラス化が不十分に記述されている可能性があります。

MyDomain.metaClass.findAllByIdNotInList = {ArrayList list ->
        return []
    }

編集:grails 1.3.7の使用。

も試した

 MyDomain.metaClass.findAllByIdNotInList = {deflist ->
        return []
    }

バグレポートはこちら:

http://jira.grails.org/browse/GRAILS-8593

4

1 に答える 1

2

@Sagar Vのコメントは正しいです。ドメインが適切にモックされている場合、すべての動的ファインダーを利用できるはずです。2.0 より前のバージョンの Grails を使用している場合は、動的ファインダーを呼び出す前にGrailsUnitTestCase、拡張して呼び出す必要があります。MockDomain(MyDomain)参考までに、metaClassing は適切に記述されていません (私の意見では、モック フレームワークを使用してテストを機能させる必要があります。将来的に適切に使用できるように、正しい構文を提供しています)。

MyDomain.metaClass.'static'.findAllByIdNotInList = {defList ->
    []
}

オーバーライドするメソッドの場合は、と メソッド名の間staticに を追加する必要があります。.'static'.metaClass

于 2012-05-04T17:54:36.523 に答える