В пружинного MVC проекта У меня есть тест на содержание индекса/домашнюю страницу:тест JUnit для веб-сайта содержит одну строку или (эксклюзивный) другой строки
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HomePageTest {
@Autowired
private MockMvc mockMvc;
@Test
public void shouldContainStrings() throws Exception {
this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Hello World")));
}
}
Этот тест отлично работает до сих пор. Но теперь я хотел бы проверить наличие строк «Вход» или (исключение) «Выход», т. Е. Я хочу проверить, отображается ли в контенте ровно одна (а не ноль, а не обе) этих двух строк. Как я могу сопоставить это или условие?
Я попытался
...
.andExpect(content().string(
either(containsString("Login")).or(containsString("Logout"))));
....
Но это не работает, либо (не выдаст ошибку, если обе строки отображаются на странице).
Я думаю, что у вас должен быть два метода испытаний: каждый ожидает «Логин», потому что вы не вошли в систему, а другой ожидаете «Выход», поскольку вы не зарегистрированы. – davidxxx
@ davidxxx: Хорошая точка. Но предположим, что они разные строки (а не «Вход/Выход»). Есть ли способ сопоставить этот XOR, или мне нужно написать свой собственный помощник? – user1583209