0
Я хочу протестировать, что сессия имеет правильное значение TTL в разное время запроса. Как мне это сделать?Как я могу проверить наличие конкретных данных в сеансе?
@ThreadSafe
@RestController
@SessionAttributes("TTL")
@RequestMapping("/rest/")
public class MessageRestController {
private static final String TTL = "TTL";
@Secured("ROLE_USER")
@RequestMapping("/message")
public List<String> getMessage(Model model) {
final Optional<String> message = messageService.getMessage();
if (message.isPresent()) {
return Collections.singletonList(message.get());
} else {
final Long currentTtl = (Long) model.asMap().get(TTL);
if (currentTtl == null || Instant.ofEpochMilli(currentTtl).isBefore(Instant.now())) {
messageService.generateNewMessage();
model.addAttribute(TTL, Instant.now().plusMillis(ttl).toEpochMilli());
}
return Collections.emptyList();
}
}
}
я пытался сделать, как этот
mockMvc.perform(get("/rest/message").sessionAttr("TTL", Instant.now().minusSeconds(60).toEpochMilli()))
.andExpect(status().isOk())
.andExpect(model().attribute("TTL", Matchers.greaterThan(Instant.now().toEpochMilli())));
Он бросает исключение java.lang.AssertionError: No ModelAndView found
. Действительно, у меня нет ModelAndView. Можно ли проверить атрибут сеанса?