2013-09-05 2 views
0

У меня есть частный метод под названием getSubject в классе, который я только что внедрил. Я пытаюсь выполнить единичный тест по частному методу, но моя проблема заключается в том, что частный метод getSubject вызывает другой метод getSubjectOracle() (примечание: getSubjectOracle - это открытый метод в файле jar), который возвращает объект String. Pseoudocode показан ниже:Как высмеять возврат общедоступного метода, вызванного в private-метод inSpring

public class Service{ 

    private oracleDao 

    //setter for oracle dao avilable 


    private String getSubject(String id,Stringountry){ 

     String subject = oracleDao.getSubjectOracle(String id,String country) 

     return subject; 

    } 

} 

Любая идея, как я могу издеваться возвращение метода oracleDao.getSubjectOracle(String id,String country) для выполнения модульного теста для метода getSubject(String id, String country) PLS?

У меня есть поиск в Интернете полезных полезных материалов, но я не могу получить.

Заранее спасибо.

ответ

1

Одним из способов может стать создание сеттера для oracleDao. Там вы можете установить макет вместо реальной вещи. Например, напишите свой собственный oracleDao, который делает то, что вы хотите. В методе @Before вы должны ввести ложный oracleDao.

Все это лучше с каркасом, как Mockito. Это будет выглядеть следующим образом:

@Mock 
YourDaoThing mock; 

@Before 
public setUp(){ 
    MockitoAnnotation.initMocks(this); 
    service = new Service(); 
    service.setDao(mock); 
} 

@Test 
public testGetSubject(){ 
    String someString = "whatever"; 
    when(mock.getSubjectOracle(id,country)).thenReturn(someString) 

    assertEquals(expect, service.callToTheMethodYouTest()) 

} 
+0

Привет, спасибо большое за ответ я слежу за вашим примером, но согласно вашему примеру, как я могу сделать метод callToTheMethodYouTest() видно, так как это частная извиняться я знаю, что это не было? часть вопроса. – user1999453

+0

Ну, обычно вы проверяете все общедоступные методы. Я подозреваю, что какой-то публичный метод в вашем классе будет вызывать частный метод. Это то, что я имел в виду с callToTheMethodYouTest(), который должен вызывать частный метод, который вы хотите проверить. –

1

Если вы пытаетесь протестировать Service, то вам также нужно издеваться над oracleDao и сделать свой метод getSubjectOracle() для возврата строки, которую вы хотите.

Я предполагаю, что вы не тестируете getSubject(), а метод, который вызывает getSubject().

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