更精确的答案要求您发布解析器类的代码。
我有一个方法,只是简单地添加一些东西到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是否正确工作。任何想法,代码片段将是很好的。
您没有显示您的解析器类是什么,但是一种解决方案是为该类创建一个仅测试的构造函数,并将映射的间谍或模拟传递给它;例如:
@Test
public void mapIsFilled()
{
final Map<Foo, Bar> map = mock(Map.class);
final Parser parser = new Parser(map);
parser.whatever();
very(map).put(...);
}