如何解决使用模拟尝试验证是否使用了我的方法
我使用Mockito和JUnit5。我有一个小程序,可以计算字符串中的不同字符。我有一个Map形式的缓存,如果输入字符串之前已经处理过,则从缓存中选择结果。 我的目标是使用Mockito编写测试,以验证是否已从字符串中提取了结果(如果以前已处理过该字符串)。我不知道如何正确使用verify Mockito方法。 这是我的代码:
public class CounterDecorator implements CharCounter{
Cache cache;
CharCounter counter;
public CounterDecorator(Cache cache,CharCounter counter) {
this.cache = cache;
this.counter=counter;
}
@Override
public Map<Character,Integer> count(String text) {
if(!cache.contains(text)) {
System.out.println("New entry in cache");
cache.putText(text,counter.count(text));
}
return cache.getText(text);
}
}
public class Cache {
private Map <String,Map<Character,Integer>> cache = new HashMap <>();
public void putText(String text,Map <Character,Integer> result) {
cache.put(text,result);
}
public Map<Character,Integer> getText(String text) {
return cache.get(text);
}
public boolean contains(String text) {
return cache.containsKey(text);
}
}
并进行测试:
@ExtendWith(MockitoExtension.class)
class DecoratorTest {
@Mock
Cache mcache;
@Mock
CharCounter mcharcounter;
@InjectMocks
CounterDecorator decorator;
@Test
void testWhenCacheIsNotEmpty() {
Map<Character,Integer> testMap = Collections.emptyMap();
verify(mcache,atLeastOnce()).putText("some string",testMap);
}
}
我确定我错误地使用了Mockito。但是我不知道如何解决我的问题。预先谢谢你。
编辑。我对测试进行了部分编辑:删除了令人困惑的地图实例化。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。