我有一个方法,只需添加一些东西到hashmap。我的测试看起来像这样:
Collection<SomeCollection> colelction = setUpConfluenceUsers();
String group = "a";
String group2 = "s";
Parser collection = new ParserImpl();
//when
parser.map(group,users);
hashmap在类的顶部初始化。我想测试一下是否有效。我只是不知道如何检查该列表是否包含预期的元素。检查该方法是否会返回一些内容会很简单。
现在我的解析器看起来像这样:
public static final String SEARCH_REGEX = "([\\s>])@(\\w+(?:[-\\.]\\w+)*)";
public static final int GROUP = 2;
private List<String> list = Lists.newArrayList();
Map hashMap = new HashMap<String, Collection<SomeCollection>>();
@Nonnull
@Override
public List<String> find(String body) {
Pattern r = Pattern.compile(SEARCH_REGEX);
Matcher matcher = r.matcher(body);
MatchResultsIterable resultIterable = new MatchResultsIterable(matcher);
for (MatchResult matchResult : resultIterable) {
list.add(matchResult.group(GROUP));
}
return list;
}
@Nonnull
@Override
public String parse(String body) {
return body;
}
@Override
public void map(@Nonnull String group, @Nonnull Collection<SomeCollection> users) {
hashMap.put(group, users);
}
我想做一些断言来检查map cworks是否正确。任何想法,代码片段都会很好。
答案 0 :(得分:1)
您没有显示您的解析器类是什么,但一种解决方案是为此类创建一个仅测试构造函数,并将地图的间谍或模拟传递给它;例如:
@Test
public void mapIsFilled()
{
final Map<Foo, Bar> map = mock(Map.class);
final Parser parser = new Parser(map);
parser.whatever();
very(map).put(...);
}
更精确的答案要求您发布解析器类的代码。