私はSpringブートで書かれたRestFul APIのためにJUnitを書いています。JUnitソフト削除のテスト
APIには「ソフト削除」と呼ばれる機能があり、「アクティブ」と呼ばれるデータベース列があります。ユーザーがオブジェクトを削除した場合、アクティブに0が設定され、このオブジェクトが削除されたことが示されます。
ここにソフト削除用のJunitテストコードがあります。驚いたことに、Junitの結果は、オブジェクトを削除してもアクティブが常に1であることを示しています。ここで
削除コードです。ご覧のとおり、「アクティブ」を更新してfalseに設定するだけです。
@RepositoryRestResource(collectionResourceRel = "manufacturers", path = "manufacturers")
public interface ManufacturerRepository extends CrudRepository<Manufacturer, String> {
@Modifying
@Query("update Manufacturer m set m.active=false where m.id=: {#m.getManufacturerId()}")
void delete(@Param("m") Manufacturer m);
}
データベーステーブルでアクティブが0に設定されていることがわかったので、テストコードが間違っていると確信しています。なぜこのようなことが起こっているのか?
#アドバイスありがとうございます。私はコードを更新して、データベースから新しいコピーを取得しました。これでアクティブがfalseになり、私のコードがテストに合格しました。
ユニットテストはおそらくdbとやりとりするべきではないでしょう。これはユニットテストではなく、統合テストです – nhouser9
リポジトリの 'delete'メソッドは何ですか?あなたはいくつかのコードを与えることができますか? –