Как смоделировать статические методы, используя UnitilsJUnit4?
У меня есть метод getAllCustomers
внутри CustomerService
учебный класс. Внутри этого метода я вызываю другой статический метод из CustomerDao
учебный класс. Теперь, когда я пишу джунит для метода getAllCustomers
внутри customerService
класс, где я хочу издеваться над вызовом статического метода CustomerDao
т.е. getAllCustomers
, Вот краткий фрагмент кода метода getAllCustomers
внутриCustomerService
учебный класс. Можно ли смоделировать вызов статического метода с помощью unitils?
Public static List<CustomerDate> getAllCustomers()
{
//some operations
List<CustomerDate> customers=CustomerDao.getAllCustomers();// static method inside CustomerDao
//some operations
}
Приведенный выше код является лишь примером, который я пытаюсь привести. Пожалуйста, избегайте обсуждения, почему эти методы разработаны как статические методы. Это отдельная история.)
2 ответа
Это было бы вопросом:
- Настройка макета
- Вызывая макет и ожидая некоторых данных обратно
- Проверка конечного результата вашего звонка с учетом ваших данных
Итак, без особых сложностей со статическим вызовом, вот способ, которым вы можете настроить его в PowerMock:
@RunWith(PowerMockRunner.class)
@PrepareForTest(CustomerDao.class)
public class CustomerTest {
@Test
public void testCustomerDao() {
PowerMock.mockStatic(CustomerDao.class);
List<CustomerDate> expected = new ArrayList<CustomerDate>();
// place a given data value into your list to be asserted on later
expect(CustomerDao.getAllCustomers()).andReturn(expected);
replay(CustomerDao.class);
// call your method from here
verify(CustomerDao.class);
// assert expected results here
}
}