2016-07-14 2 views
0

Я пытаюсь проверить контроллер загрузки Spring с помощью Mockito. Я выполняю этот учебник: https://www.javacodegeeks.com/2013/07/getting-started-with-springs-mvc-test-framework-part-1.htmlReflectionTestUtils.setField (Mockito), не распознающий поле.

Метод я тестирование:

public class DigipostSpringConnector { 

@Autowired 
private String statusQueryToken; 

@RequestMapping("/onCompletion") 
public String whenSigningComplete(@RequestParam("status_query_token") String token){ 
    this.statusQueryToken = token; 
} 

До сих пор, я написал это в моем тестовом классе:

public class DigipostSpringConnectorTest { 

@Before 
public void whenSigningCompleteSetsToken() throws Exception{ 
    MockitoAnnotations.initMocks(this); 
    DigipostSpringConnector instance = new DigipostSpringConnector(); 
    ReflectionTestUtils.setField(instance, "statusQueryToken", statusQueryToken); 

} 
} 

Однако, я получаю ошибка «Не удается разрешить status statusQueryToken». Похоже, тест не знает, что я имею в виду приватное поле statusQueryToken, которое находится в другом классе.

Любые идеи о том, как это решить?

Спасибо!

ответ

4

Это потому, что значение переменной statusQueryToken in whenSigningCompleteSetsToken() не определено. Попробуйте это:

String statusQueryToken = "statusQueryToken"; 
ReflectionTestUtils.setField(instance, "statusQueryToken", statusQueryToken); 
1

statusQueryToken неопределен, просто потому, что вы не определили его. Третий параметр: setField() определяет, какое значение вы хотите присвоить этому полю. Таким образом, вы должны сделать что-то вроде:

ReflectionTestUtils.setField(instance, "statusQueryToken", "the string value to set"); 

Replace "the string value to set" с тем, что вы хотите назначить в поле.

ReflectionTestUtils затем, с помощью reflection, поиск в instance на поле с именем statusQueryToken и присвоить значение "the string value to set" к нему.

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