在spring mvc项目中,我对索引/主页的内容进行了测试:
@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")));
}
}
到目前为止,这个测试还不错。但是现在我想测试字符串“login”或(excl)“logout”是否出现,也就是说,我想测试这两个字符串中是否只有一个(不是零,也不是两个)出现在内容中。我怎样才能符合这个条件?
我试过了
...
.andExpect(content().string(
either(containsString("Login")).or(containsString("Logout"))));
....
但这也不起作用(如果两个字符串都出现在页面中,则不会给出错误)。
3条答案
按热度按时间ebdffaop1#
当我找不到一个合适的时候,我不得不亲自写信给客户匹配者。
huwehgph2#
只要
string()
方法接受hamcrest matcher,我在这里看到两个选项:或者自己实现类似xor的matcher(您可以使用这个答案作为参考)https://stackoverflow.com/a/29610402/1782379)...
…或使用复杂的条件,如“其中任何一个,但不能同时使用”
我个人更喜欢第二种选择。
p4tfgftt3#