2015-09-29 2 views
0

У меня есть метод, который просто добавляет что-то в hashmap. Мой тест на это выглядит так:Test - Как проверить, было ли что-то добавлено в 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); 
} 

Я хотел бы сделать какое-то утверждение, чтобы проверить, если карту Cworks правильно. Любые идеи, фрагменты кода были бы хороши.

+0

Является ли 'parser' объектом Mockito? Если это так, 'parser.map (group, users);' ничего не сделает. – Tunaki

+0

Извлечь hashmap и проверить (hashmap) .put (группа, пользователи). – Manu

+0

@Manu Могу ли я как-то утверждать, что он содержит мои элементы? – Cosaquee

ответ

1

Вы не показываете, что такое ваш парсерный класс, но одно решение - создать конструктор только для тестов для этого класса и передать ему шпион или макет вашей карты; например:

@Test 
public void mapIsFilled() 
{ 
    final Map<Foo, Bar> map = mock(Map.class); 
    final Parser parser = new Parser(map); 

    parser.whatever(); 

    very(map).put(...); 
} 

Более точный ответ требует, чтобы вы опубликовали код вашего класса парсера.

+0

Это просто класс с тремя методами, которые не зависят друг от друга. – Cosaquee

+0

Тогда вы можете просто сбросить свой код в вопрос, не так ли? – fge

+0

Код теперь в вопросе – Cosaquee

Смежные вопросы