Правильный способ проверки с помощью Mockito - PullRequest
4 голосов
/ 08 марта 2011

У меня есть метод - getSomethingAmount () в некотором классе (класс A), который я хочу протестировать.Эта логика метода getSomethingAmount () зависит от Set bSet, который передается в конструктор при инициализации класса A.Например, если Set bSet содержит 2 объекта с Status.OK, когда getSomethingAmount () должен вернуть 2. Как я могу правильно проверить это условие с помощью Mockito?

Теперь я заглушаю 2 объекта типа B, помещаю их в bSet, а затем утверждаю результат метода getSomethingAmount () с утверждением JUnit - он работает, но не выглядит для меня как "истинный" способ Мокито.1003 *

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

Макет объектов в коллекции, а не коллекции.В противном случае тест будет хрупким и сломается, если вы измените реализацию.Например, если вы решили, что вам нужно перебирать свои объекты в наборе, а не просто использовать метод size.

B b = mock(B.class);
A target = new A(new HashSet<B>(Arrays.asList(b, b)));
Assert.assertSame(2, target.getSomethingAmount());
1 голос
/ 27 июня 2011

Исходя из вашего описания ожидаемого поведения, это звучит как довольно надежный способ модульного тестирования метода. По «истинному пути Мокито» я полагаю, что вы хотите что-то вроде:

Set mockBSet = mock(Set.class);
stub(mockBSet.size()).toReturn(2);
A testObjectA = new A(mockBSet);
Assert.assertEquals(testObjectA.getSomethingAmount(), 2);

Это при условии, что инициализация Set и тестовых объектов не имеет побочных эффектов, которые вы хотите, чтобы тест принимал во внимание. (Например, всегда добавляются некоторые «что-то» по умолчанию.) В этом случае вы также можете опустить заглушку и подтвердить, что тестируемый метод возвращает значение, равное размеру набора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...