【问题标题】:mockito throwing InvalidUseOfMatchersException模拟抛出 InvalidUseOfMatchersException
【发布时间】:2016-04-21 13:46:28
【问题描述】:
我的 getUserDetails 类将用户(客户类)和字符串作为参数并返回用户。如果我使用 Mockito 匹配器如下:
when(authService.getUserDetails(any(User.class),anyString())).thenReturn(any(User.class));
它给了我 InvalidUseOfMatchersException 2 个预期的匹配器,找到了 3 个。不能用上面的表达式吗?
【问题讨论】:
标签:
junit
mockito
matcher
【解决方案1】:
匹配器不用于返回。
.thenReturn(any(User.class));
你必须在这里返回一些有形的东西。匹配器仅用于匹配输入,以便您可以指定在提供特定输入时返回的内容。你仍然需要有一个真正的输出才能返回。
【解决方案2】:
您应该将User 的实例传递给thenReturn,而不是匹配器。调用 authService.getUserDetails 时将返回 User 实例。
【解决方案3】:
此代码将起作用:
User user=new User();
when(authService.getUserDetails(any(User.class),anyString())).thenReturn(user));
因为应该有一个值而不是输入 thenReturns()