我有这个问题,我希望我的模拟在某些特定情况下返回特定值,在任何其他情况下返回另一个值,在下面的代码中由anyString()
表示。
@Test
public void testMockitoWithAny() {
// Mock the object
List<String> list = mock(List.class);
// populate the mock with the rules
when(list.add("abc")).thenReturn(false); // first rule
when(list.add(anyString())).thenReturn(true); // default rule
// Verify the rules.
assertTrue(list.add("xyz")); // Ok
assertFalse(list.add("abc")); // AssertionError.
}
如何与Mockito发表这样的声明?
答案 0 :(得分:1)
好的,我找到了答案。我只需要切换规则,先设置默认规则。
@Test
public void testMockitoWithAny() {
// Mock the object
List<String> list = mock(List.class);
// populate the mock with the rules
when(list.add(anyString())).thenReturn(true); // default rule
when(list.add("abc")).thenReturn(false); // first rule
// Verify the rules.
assertTrue(list.add("xyz")); // Ok
assertFalse(list.add("abc")); // Ok
}
答案 1 :(得分:0)
你需要一个匹配任何字符串的匹配器,除了&#34; abc&#34;:
import static org.hamcrest.CoreMatchers.*;
...
when(list.add(argThat(not(equalTo("abc"))))).thenReturn(true); // default rule