なんじゃくにっき

プログラミングの話題中心。

play framework 1.2.x のFunctionalTestでDBに保存した値を取得する方法

参考 http://d.hatena.ne.jp/juzow/20120712/1342099582
 
昨日に引き続き、play frameworkのテストネタ。 
play frameworkを使っていて、FunctionalTest内でDBに保存した値が取れない、
という問題にぶち当たりました。
原因の考察はid:juzow様の上記記事に詳しいです。感謝。
 
で解決方法ですが、上記記事のを参考にしても環境が違うせいなのか上手くいきませんでした。
そこで少し替えてみたら上手くDBに保存した値が取れるようになりました。
 
↓こんな感じ 


@Test
public void test() {
JPAPlugin.startTx(false); // 引数はauto-rollback
final Request req1 = newRequest();
req1.url = "/post";
req1.params.put("param", "param");
POST(req1, "/save");
JPAPlugin.closeTx(false); // ここでDBに永続化される

JPAPlugin.startTx(false);
final MyModel myModel = MyModel.findById(id);
JPAPlugin.closeTx(false);

assertNotNull(myModel);
}

処理毎に JPAPlugin.startTx(false) と JPAPlugin.closeTx(false);
で囲むとうちの環境ではテスト成功しました。