私はLocalDateTime.now()メソッドによって生成時間を主張する問題は、私はそれが生成する時間を無視して、全体のクエリを主張したいしています。 はここにコードされて:あなたは私が無視するために必要なものより多くのアイデアを持っていることができるようにどのように私は、クエリを主張することができますか()?
@Test
public void getLastDrawResult_lotteryIdPresent() {
Optional<Long> lotteryId = Optional.of(3L);
Optional<String> name = Optional.empty();
Optional<String> byName = Optional.empty();
Optional<String> byDate = Optional.empty();
Optional<Boolean> jackpotOnly = Optional.empty();
String query = QUERY_MAIN_BLOCK.replace("/*statement0*/", LocalDateTime.now().plusMinutes(buyingLock).toString()) + CONDITION_SEARCH_BY_LAST_DRAW_RESULT;
String updatedQuery = query.replace("/*statement1*/", " WHERE d.lottery_info_id = 3") + " AND d.lottery_info_id = 3";
DrawResultDto drawResultDto = DrawResultDto.builder().id(3L).build();
List<DrawResultDto> expectedDrawResultDto = singletonList(drawResultDto);
when(jdbcTemplate.query(updatedQuery, drawResultDtoQueryBuilder.queryMapper)).thenReturn(expectedDrawResultDto);
List<DrawResultDto> actualDrawResultDto = drawResultDtoQueryBuilder.getLastDrawResult(lotteryId, name, byName, byDate, jackpotOnly);
verify(jdbcTemplate).query(updatedQuery, drawResultDtoQueryBuilder.queryMapper);
assertEquals(expectedDrawResultDto, actualDrawResultDto);
ここでは、比較の失敗の詳細です:
を:ここで Comparison Failure Window Screenshot.は、私がテストしてる方法であり、
public List<DrawResultDto> getLastDrawResult(Optional<Long> lotteryId, Optional<String> name, Optional<String> byName, Optional<String> byDate, Optional<Boolean> jackpotOnly) { String query = QUERY_MAIN_BLOCK.replace("/*statement0*/", LocalDateTime.now().plusMinutes(buyingLock).toString()) + CONDITION_SEARCH_BY_LAST_DRAW_RESULT; StringBuilder builder = new StringBuilder(); if (lotteryId.isPresent()) { builder.append(query.replace("/*statement1*/", " WHERE d.lottery_info_id = " + lotteryId.get())) .append(String.format(" AND d.lottery_info_id = %d", lotteryId.get())); } else { builder.append(query); name.ifPresent(nameValue -> builder.append(" AND lower(li.name) LIKE '%").append(SqlUtils.escapeLike(nameValue).toLowerCase()).append("%' ")); jackpotOnly.ifPresent(jackpotOnlyValue -> { if (jackpotOnlyValue) { builder.append(" AND ").append(CONDITION_SEARCH_BY_JACKPOT_WIN); } }); byName.ifPresent(s -> builder.append(" ORDER BY li.name ").append(SqlUtils.escapeLike(s))); byDate.ifPresent(s -> builder.append(" ORDER BY nfd.nearestDrawDate ").append(SqlUtils.escapeLike(s))); if (!byName.isPresent() && !byDate.isPresent()){ builder.append(" ORDER BY li.name desc "); } } return jdbcTemplate.query(builder.toString(), queryMapper); }
私はマッキントッシュからのマッチを試しました、運はありません。私は、正規表現を働かせるように見えることはできません。 Matchと同様に、以下のRegex:(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3})
。私は無視する必要がある部分を選択します。あなたのコードの後にテストを書いているように
それは私が私がテストしていたクラス/メソッドへの変更をしないことがベストです。 – Amiko