私の質問に対する簡単な答えは、なぜそれをしたいのかということです。これは機能テストであり、実行中のアプリ JVM から離れている可能性があります。
その理由は、Web の問題が発生したときにドメイン オブジェクトが更新されていることを確認したいからです。Luke Daley は親切にも、かなりクールなRemote-Control Grails プラグイン ( https://github.com/alkemist/grails-remote-control )を使用してそれを行うことができると指摘しました。プラグインをインストールしてから進みます
assert remote {
MyDomainOb.findByName('fred') != null
}
そして、そのクロージャーをサーバー上で実行するように送信し、テストできる結果を返します。結果はシリアライズ可能でなければなりません。
1 つの方法ですが、リモート プラグインは、課せられたドメイン モデルのためにフードの下で多くの複雑なオブジェクトが変更されている場合、テストの結果を取得するのが少し難しくなります。では、同じ JVM を使用しているときに、テストの休止状態セッションを取得するにはどうすればよいでしょうか?? このような:-
Session currentSession
def setup() {
ApplicationContext context = (ApplicationContext) ServletContextHolder.getServletContext().getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT);
SessionFactory sf = context.getBean('sessionFactory')
currentSession = sf.getCurrentSession()
}
それを GebSpec の先頭に追加すると、 currentSession.clear() または currentSession.flush() を呼び出すことができます
テストセッションを更新する必要があったため、 currentsession.clear() が答えでした。
テスト対象のターゲットが別の VM にある場合、これは役に立たないため、リモートを使用する必要があることに注意してください。