0

私はおそらく私の問題の完全なGitHubの例を提供するでしょうが、当面は似たような問題に直面しているかもしれません。SpockとSpring Bootとの統合テストのためにDBをあらかじめ正確に入れておく

問題は - SpockとSpring Bootで、私は統合テストを実行し、H2データベースのローカルインスタンスを 'setup'メソッドで事前入力します。私はお互いに親であることができるいくつかのオブジェクトを作成します。だから私は例えば作成する。 Human1とHuman2を生成し、生成されたIDをシーケンスから取得し、Human1 idを 'parentId'プロパティとしてREST JSON呼び出しを準備し、Human1を親としてHuman3を作成するためにAPIをPOSTにします。

APIは取得したDTOを解析し、 'parentId'値を抽出し、メソッド 'findOne(id)'を使用してリポジトリを使用して検索を実行します。問題は、この段階でリポジトリがデータベースに適切な内容のコンテンツがないと主張していることです。

私は@Transactional(私のSpock仕様とマッパークラスのメソッドの両方)を使いこなそうとしましたが、セットアップで保存とフラッシュを行い、別々のリポジトリと何千ものものを別々にフラッシュしましたが、 。だから、もし誰もが少なくとも私はそれを本当に感謝するだろう問題に光を当てることができる。

+0

あなたの回答を以下に追加して受諾することができます。このようにして、質問は「回答済み」とマークされ、他のユーザーに役立ちます。 – kazanaki

答えて

0

だから私は最後につまずいた@BeforeTransaction注釈は魅力のように機能します。データベースの挿入/削除ロジックを別のメソッド@BeforeTransactionでアノテートし、テストメソッドの開始に関連する別のトランザクションが開始される前に閉じられる別のトランザクションですべての単一テストメソッドの前に呼び出されます。それが問題を解決しました。

関連する問題