学習反応基礎#17 Springboot junitテスト3


次にsaveとfindAll関数をテストします.

でもsaveとは違ってfindAllには投げるデータがありませんまた,先にTransactionalを入力したデータはロールバックされ,データはない.

そのため、返却されると予想されるデータを作成します.ここまで

getで呼び出されると、acceptセクションには、このように書かれ、返されると予想されるタイプのみが書き込まれます.そして私が期待しているのは、2つのデータstub,「$」,Matchersを作成したことです.hasSize(2)$はMatchers全体を指す.hasSize(2)ここに何個あるか、

そして入力が終わったらfind All testという部分ブロックを追加し、runas-junit testを右クリックします.

テストに成功しました.これから統合コントローラをテストしましょう.

統合テストでは、指定された部分は必要ないため消去されますが、データベースにはデータがなく、0になります.
だから上.
@Autowired
private BookRepository bookRepository;
このように,repository DIを実際にDBに入れて確認することができる.

さっき作ったBookRepositoryを再入力saveAll(books);1本で2つのデータを試してみます.これで、現在2回、whenで/bookで検証できます.

ここにもう一つ置いて、findAllテストだけ回して、左下の集合の大きさが違って、エラーが発生しました.

これでテストに合格できます!
でもここです.

これによりidにnullを追加すると、automincrementポリシーが自動的に1,2,3に数値を追加することもわかります.では、ここでfind Allテストではなく、さっきやった2つのすべてのテストなら?

IDが1 2 3ではなく2 3 4であることがわかります上でsaveテスト()を行った後、データはトランザクションにロールバックされ、idは2から開始されます.
次の画像にはfind Allテスト()とExpect(jsonPath(「$.[0].id」)が表示されます.value(1 L)0番にidが1 Lと書いたら?

find Allテスト()のみを実行すると、テストは合格しますが、すべてに変換すると合格できません.
完全に独立して分離する必要がありますが、必要なのは
@BeforeEachは高齢者で、すべてのテスト関数が実行される前にそれぞれ実行されます.すなわち,saveテストの実行前に1回,find Allの実行前に1回実行する.
JPAはEntityManagerというインタフェースの実装体です.

executeUpdate()は、jsp学習時にもPreparedStatementで使用されます.結果としてpreparedstatementというほとんどの実装チェーンでもある.要するに、このようにコードを記述すると、auto incrementはテストのたびに1にリセットされます.この増加ポリシーは、使用するDBに基づいて初期化する必要がある.

両方のテストに成功し、idも1から始まります.
次に、idでデータをクエリーすることをテストします.

コードもクエリー全体とあまり差がなく、すぐにテストしました.

きれいに通る
get("/book/{id}",id)の部分に示すように、PathValableのようにサポートすることもできます.
今回の投稿はここまでです이 글은 유튜브 메타코딩 채널의 영상을 보며 공부한 내용을 기록한 게시글입니다.