2016-07-14 59 views
0

Mockitoを使用してSpringブートコントローラをテストしようとしています。私はこのチュートリアルを次のです: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()メソッドのvalue変数statusQueryTokenが定義されていないためです。試してみてください:

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

statusQueryTokenは定義されていないため、定義されていません。 setField()の3番目のパラメータは、フィールドに割り当てる値を定義します。

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

あなたがフィールドに割り当てたいものは何でもして"the string value to set"を置き換え:だから、あなたのような何かを行う必要があります。

ReflectionTestUtilsはその後、reflectionの助けを借りて、statusQueryTokenと呼ばれるフィールドのinstanceで検索し、そこに価値"the string value to set"を割り当てます。

関連する問題