0

JavaFXとJPAプラグインを使用してgriffonアプリケーションを作成しています。テストしたいサービスがあります。このサービスはJPAプラグイン(withJpa {...})を使用しており、テストしたいのはこのデータベースアクセスです。

したがって、このテストを記述してデータを挿入し、サービスが正しい答えを生成することを確認して、SQLクエリが正しいことを確認します。

私は簡単なテストを書きました:

class ReportServiceTests extends GriffonUnitTestCase {
    GriffonApplication app

    public void testStats() {
        println app.getServices()
        println app.getControllers()
    }
}

しかし、有効なサービスを取得できません。上記のprintlnステートメントは両方とも「[:]」を生成します。

'ReportService'インスタンスを取得して、データベースに対して実行するにはどうすればよいですか?データベースの相互作用をあざけりたくありません。

ありがとう。

4

1 に答える 1

1

データベースをモックする必要はありません。http://griffon.codehaus.org/guide/latest/guide/testing.html#integrationTestingで説明されているように、アプリケーションは統合テスト中にINITIALIZEフェーズに到達します。アドオンはこのフェーズで初期化されます。一方、サービスは、インスタンス化されるときにMVCメンバーによってプルされるため、遅延して初期化されます。を呼び出しても、すぐにインスタンス化されることはありませんapp.getServices()。ただし、すべてのサービスを熱心にインスタンス化するようにアプリケーションに指示することはできます。これにより、コードが期待どおりに機能するようになります。次のフラグをConfig.groovyに追加するだけです

griffon.services.eager.instantiation = true

サービスの詳細については、 http: //griffon.codehaus.org/guide/latest/guide/controllersAndServices.html#servicesをご覧ください。

于 2013-02-18T08:53:18.717 に答える