Mockito Varargs使用参数匹配器无效



test

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MockabstractionApplication.class)
public class SimpleTest {
    @SpyBean
    private SimpleService spySimpleService;
    @Before
    public void setup() {
        initMocks(this);
    }
    @Test //fails
    public void test() throws Exception {
        when(spySimpleService.test(1, Mockito.<String>anyVararg())).thenReturn("Mocked!");
    }
}

服务

@Service
public class SimpleService {
    public String test(int i, String... args) {
        return "test";
    }
}

测试失败下一条消息:

org.mockito.exceptions.misusing.invaliduseofmatchersexception: 参数匹配者的使用无效!2个匹配者,有1个记录:

我必须使用int作为第一参数和任何数量的varargs。

如果将匹配器用于一个参数,则必须将其用于所有参数。

when(spySimpleService.test(Mockito.eq(1), Mockito.<String>anyVararg())).thenReturn("Mocked!");

您不能混合匹配器和正确的参数

spySimpleService.test(1, Mockito.<String>anyVararg())

可以用

替换

spySimpleService.test(anyInt(), Mockito.<String>anyVararg())

我认为您需要将参数匹配器用于 参数,您不能在那里混合和匹配。

尝试

@Test //fails
public void test() throws Exception {
    when(spySimpleService.test(anyInt(), Mockito <String>anyVararg())).thenReturn("Mocked!");
}

相关内容

  • 没有找到相关文章

最新更新