3

日付による検索に対するテストを書きたいと思います。次のようなテストコードを考えています

assertThat(repository.findByBookingDateAfter(LocalDate.of(2016, 1, 1))).extracting("bookingDate").are(...));

クラス構造は次のようなものです。

public class Booking{
  ...
  LocalDate bookingDate;
  ...
}

クエリは特定の日付以降の予約に関するものであるため、私のテストでは、実際にその日付より後のフィールドをチェックする必要があります。いくつかのオンライン検索の後、有用な情報が表示されません。私は正しい軌道に乗っているかどうか疑問に思っています。

助言がありますか?

アップデート:

後で、依存関係の設定を build.gradle ファイルで次のように変更します。

testCompile('org.springframework.boot:spring-boot-starter-test'){
    exclude group: 'org.assertj'
}
testCompile group: 'org.assertj', name: 'assertj-core', version: '3.6.2'

assertj の最新バージョンを取得します。

更新 2:

以下は、「is」で始まるメソッドのスクリーンショットです。「isAfter」はリストにありません。

ここに画像の説明を入力

4

1 に答える 1

5

allMatchまたはallSatisfyアサーションを使用して、抽出されたすべての日付がクエリで使用された日付よりも後であることを確認します。

// set the extracted type to chain LocalDate assertion 
assertThat(result).extracting("bookingDate", LocalDate.class)
                  .allMatch(localDate -> localDate.isAfter(queryDate)));

また

// use a lambda to extract the LocalDate to chain LocalDate assertion
assertThat(result).extracting(Booking::getBookingDate)
                  .allSatisfy(localDate -> assertThat(localDate).isAfter(queryDate));

2 番目のアサーションでより適切なエラー メッセージが表示され、誤った日付が表示されます。

于 2017-02-18T22:39:37.187 に答える