参考 http://d.hatena.ne.jp/juzow/20120712/1342099582
昨日に引き続き、play frameworkのテストネタ。
play frameworkを使っていて、FunctionalTest内でDBに保存した値が取れない、
という問題にぶち当たりました。
原因の考察はid:juzow様の上記記事に詳しいです。感謝。
で解決方法ですが、上記記事のを参考にしても環境が違うせいなのか上手くいきませんでした。
そこで少し替えてみたら上手くDBに保存した値が取れるようになりました。
↓こんな感じ
処理毎に JPAPlugin.startTx(false) と JPAPlugin.closeTx(false);
@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);
}
で囲むとうちの環境ではテスト成功しました。