Зачем нам нужны насмешливые рамки? - PullRequest
17 голосов
/ 11 ноября 2009

Я работал с кодом, на котором написан тест NUnit. Но я никогда не работал с насмешливыми фреймворками. Кто они такие? Я понимаю внедрение зависимости и как это помогает улучшить тестируемость. Я имею в виду, что все зависимости могут быть проверены во время модульного тестирования. Но тогда зачем нам насмешливые рамки? Разве мы не можем просто создавать фиктивные объекты и предоставлять зависимости. Я что-то здесь упускаю? Спасибо.

Ответы [ 11 ]

0 голосов
/ 11 ноября 2009

Хорошо продуманные фреймворки делают мою жизнь намного проще и менее утомительной, поэтому я могу тратить время на собственно написание кода. Взять, к примеру, Mockito (в мире Java)

 //mock creation
 List mockedList = mock(List.class);

 //using mock object
 mockedList.add("one");
 mockedList.clear();

 //verification
 verify(mockedList).add("one");
 verify(mockedList).clear();

 //stubbing using built-in anyInt() argument matcher
 when(mockedList.get(anyInt())).thenReturn("element");

 //stubbing using hamcrest (let's say isValid() returns your own hamcrest matcher):
 when(mockedList.contains(argThat(isValid()))).thenReturn("element");

 //following prints "element"
 System.out.println(mockedList.get(999));

Хотя это надуманный пример, если вы замените List.class на MyComplex.class, тогда ценность наличия насмешливой основы станет очевидной. Вы можете написать свой или обойтись без, но почему вы хотите пойти по этому пути.

...