1. ホーム

[解決済み】Mockito: プライベートな@Autowiredフィールドに実際のオブジェクトをインジェクトする

2022-04-03 13:15:04

質問

Mockitoの @Mock@InjectMocks でアノテーションされたプライベートフィールドに依存性を注入することができます。 @Autowired :

@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
    @Mock
    private SomeService service;

    @InjectMocks
    private Demo demo;

    /* ... */
}

そして

public class Demo {

    @Autowired
    private SomeService service;

    /* ... */
}

今度は リアル オブジェクトをプライベートな @Autowired フィールド(セッターなし)。これは可能なのでしょうか、それともモックの注入だけに限定されたメカニズムなのでしょうか?

解決方法は?

使用方法 @Spy アノテーション

@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
    @Spy
    private SomeService service = new RealServiceImpl();

    @InjectMocks
    private Demo demo;

    /* ... */
}

を持つすべてのフィールドを考慮します。 @Mock または @Spy でアノテーションされたインスタンスに注入される可能性がある候補です。 @InjectMocks アノテーションを使用します。上記の場合 'RealServiceImpl' のインスタンスが 'demo' に注入されます。

詳細はこちらをご覧ください。

モッキートホーム

スパイ

モック