2016-07-14 53 views
0

我想通過使用Mockito來測試Spring Boot Controller。我下面這個教程: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); 

} 
} 

但是,我得到的錯誤「無法解析符號statusQueryToken」,好像測試不知道我指的是私有字段statusQueryToken,它在另一個類中。

關於如何解決這個問題的任何想法?

謝謝!

回答

4

這是因爲未定義whenSigningCompleteSetsToken()方法中的值變量statusQueryToken。試試這個:

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

statusQueryToken是未定義的,只是因爲你還沒有定義它。 setField()的第三個參數定義了您想要分配給該字段的值。所以,你應該這樣做:

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

用你想要分配給該字段的任何東西替換"the string value to set"

ReflectionTestUtils然後將,用reflection的幫助下,在instance搜索名爲statusQueryToken場,和值"the string value to set"分配給它。