私は以下のクラスのシナリオを持っています。 MyTestableClassをテスト中に、私はAutowiredクラスを処理したいと思っています。 私はAutoWiredクラスの変数のみをモックしたいと思います。Mockitoモックランオートワイヤークラスオブジェクト
サンプルクラスはbelow-例えば
public class MyTestableClass {
@Autowired
private MyServiceClass service;
public void handleError(){
...
service.doSomething();
}
}
public class MyServiceClass {
@Autowired
private JMSChannel channel;
public void doSomething(){
System.out.println("Inside Service class");
.....
channel.isAvailable();
.....
}
}
@RunWith(MockitoJUnitRunner.class)
public class MyTestableClassTest {
private MyTestableClass testClass= new MyTestableClass();
private JMSChannel channel;
@Before
public void init(){
channel= mock(JMSChannel.class);
when(channel.isAvailable()).thenReturn(Boolean.TRUE);
}
@Test
public void test(){
testClass.handleError();
}
}
ようで、コンソールはtrueを返す前に、私に「インサイドサービスクラス」を与える必要があります。
ありがとうございました!
+1、どのように私はAutowiredサービスのインスタンスを作成するのですか? doSomething()に入るために、私はそれを嘲笑したくありません。ありがとう! –
理想的には、フィールドインジェクションからコンストラクタインジェクションに移動し、次にモックをコンストラクタに渡すだけです。 – chrylis
@chrylis、私は/コードを頼むことがありますか? –