現在Spring環境でのJavaのソースをspockでテストしています。
例:
Java
1// テスト対象クラス 2Class Hoge { 3 @Inject 4 Fuga fuga 5 6 public Hoge() { 7 fuga.getString("fuga"); 8 } 9} 10 11Class Fuga { 12 public getString(String str) { 13 return "Fuga is" + str; 14 } 15}
Hogeクラスの単体テストをしたい場合、通常であればテストコードは
Groovy
1def "Hogeテスト"() { 2 setup: 3 // ここでfuga.getStringが動いてしまう。 4 def hoge = new Hoge(); 5 Fuga fuga = Mock(); 6 fuga.getString(_) >> "Fuga is ふがふが" 7 hoge.fuga = fuga
のような形でFugaクラスをモック化すると思うのですが、今回のようにコンストラクタの中でFugaクラスのメソッドを使用する場合、Hogeクラスをインスタンス化した時点でFugaクラスのメソッドが走ってしまうため、モック化がうまくできずぬるぽで落ちてしまいます。
このような場合、どのようにしてFugaクラスをモック化すればよいのでしょうか?
あなたの回答
tips
プレビュー