如何使用变量参数concatenate(String... messages)
如果我将参数传递为
String[] messages = {"abc"};
Helper helper = mock(Helper.class);
doReturn(someStr).when(helper).concatenate(messages);
它无效。
答案 0 :(得分:0)
我们假设我们有这个班级......
public class Helper {
public String concatenate(String...strings) {
// ...some concat logic, not important
}
}
...现在我们想要嘲笑它......
@Test
public void testSomething() {
Helper helper = Mockito.mock(Helper.class);
Mockito.doReturn("blablub").when(helper).concat(Mockito.anyVararg());
Assertions.assertThat(helper.concat("bla", "bli")).isEqualTo("blablub");
}
是的,这很有效。我们给它“bla”和“bli”,但是因为我们告诉模拟在任何情况下返回“blablub”,我们得到结果。所以嘲笑任何一个vararg都很容易......我们当然也只能检查整个vararg的一部分,例如......
Mockito.doReturn("blablub").when(helper).concat(Mockito.anyString(), Mockito.eq("blub"), Mockito.anyVararg());
Assertions.assertThat(helper.concat("bli", "blub", "bla", "blu", "blo")).isEqualTo("blablub");
只要第二个论点是“blub”,无论其他人是什么,......将返回“blablub”。
答案 1 :(得分:-1)
最好使用反射方法来初始化字符串值
FieldUtils.writeField(testClass, "stringVariableName", "value", true);