mockito - 使用值列表中的值之一在匹配器中进行比较
mockito -using one of the values from list of values to compare in matcher
我的方法接口是
Boolean isAuthenticated(String User)
我想从值列表中进行比较,如果任何用户从列表中传递到函数中,那么它应该 return true。
when(authService.isAuthenticated(or(eq("amol84"),eq("arpan"),eq("juhi")))).thenReturn(true);
我正在使用额外的参数匹配器 'or' 但上面的代码不起作用。我该如何解决这个问题?
您可以定义单独的答案:
when(authService.isAuthenticated(eq("amol84"))).thenReturn(true);
when(authService.isAuthenticated(eq("arpan"))).thenReturn(true);
when(authService.isAuthenticated(eq("juhi"))).thenReturn(true);
对我来说这很有效:
public class MockitoTest {
Mocked mocked = Mockito.mock(Mocked.class);
@Test
public void test() {
Mockito.when(mocked.doit(AdditionalMatchers.or(eq("1"), eq("2")))).thenReturn(true);
Assert.assertTrue(mocked.doit("1"));
Assert.assertTrue(mocked.doit("2"));
Assert.assertFalse(mocked.doit("3"));
}
}
interface Mocked {
boolean doit(String a);
}
检查您是否正确设置了 mockito,或者您是否使用了与我相同的 Matchers。
or
没有三参数重载。 (See docs.) 如果您的代码编译通过,您可能导入了与 org.mockito.AdditionalMatchers.or
.
不同的 or
方法
or(or(eq("amol84"),eq("arpan")),eq("juhi"))
应该可以。
您也可以尝试 isOneOf
Hamcrest matcher, accessed through the argThat
Mockito matcher:
when(authService.isAuthenticated(argThat(isOneOf("amol84", "arpan", "juhi"))))
.thenReturn(true);
如果您对引入库不感兴趣,可以遍历要添加到模拟中的所有值:
// some collection of values
List<String> values = Arrays.asList("a", "b", "c");
// iterate the values
for (String value : values) {
// mock each value individually
when(authService.isAuthenticated(eq(value))).thenReturn(true)
}
我的方法接口是
Boolean isAuthenticated(String User)
我想从值列表中进行比较,如果任何用户从列表中传递到函数中,那么它应该 return true。
when(authService.isAuthenticated(or(eq("amol84"),eq("arpan"),eq("juhi")))).thenReturn(true);
我正在使用额外的参数匹配器 'or' 但上面的代码不起作用。我该如何解决这个问题?
您可以定义单独的答案:
when(authService.isAuthenticated(eq("amol84"))).thenReturn(true);
when(authService.isAuthenticated(eq("arpan"))).thenReturn(true);
when(authService.isAuthenticated(eq("juhi"))).thenReturn(true);
对我来说这很有效:
public class MockitoTest {
Mocked mocked = Mockito.mock(Mocked.class);
@Test
public void test() {
Mockito.when(mocked.doit(AdditionalMatchers.or(eq("1"), eq("2")))).thenReturn(true);
Assert.assertTrue(mocked.doit("1"));
Assert.assertTrue(mocked.doit("2"));
Assert.assertFalse(mocked.doit("3"));
}
}
interface Mocked {
boolean doit(String a);
}
检查您是否正确设置了 mockito,或者您是否使用了与我相同的 Matchers。
or
没有三参数重载。 (See docs.) 如果您的代码编译通过,您可能导入了与 org.mockito.AdditionalMatchers.or
.
or
方法
or(or(eq("amol84"),eq("arpan")),eq("juhi"))
应该可以。
您也可以尝试 isOneOf
Hamcrest matcher, accessed through the argThat
Mockito matcher:
when(authService.isAuthenticated(argThat(isOneOf("amol84", "arpan", "juhi"))))
.thenReturn(true);
如果您对引入库不感兴趣,可以遍历要添加到模拟中的所有值:
// some collection of values
List<String> values = Arrays.asList("a", "b", "c");
// iterate the values
for (String value : values) {
// mock each value individually
when(authService.isAuthenticated(eq(value))).thenReturn(true)
}