単体テストを試みているクラスがあります。私はMockitoを使用してテストしようとしています.Mockitoでスプリングインジェクションを解決するために、SpringockitoとSpringockito-annotationsを使用しています。
@ContextConfiguration(loader = SpringockitoContextLoader.class,
locations = {"classpath:testApplication-context-EU.xml"})
public class RelatedSearchToHotUrlProcessorTest extends AbstractJUnit4SpringContextTests {
@Autowired
RelatedSearchToHotUrlProcessor processor;
@ReplaceWithMock
private RestOperations restTemplate;
@Test
public void testGetCategoryFromIdWithNoStoredAlias() {
Taxonomy mockTaxonomy = mock(Taxonomy.class, RETURNS_DEEP_STUBS);
GraphType.Node mockNode = mock(GraphType.Node.class);
when(restTemplate.getForObject(anyString(), eq(Taxonomy.class))).thenReturn(mockTaxonomy);
when(mockTaxonomy
.getRev()
.get(0)
.getCountry()
.get(0)
.getGraph()
.getNodeOrAtom()
.get(0)).thenReturn(mockNode);
when(mockNode.getAlias()).thenReturn("mockalias");
String categoryAlias = processor.getCategoryAliasFromId(13130L);
assertEquals("mockalias", categoryAlias);
}
}
と 行を削除する@ReplaceWithMock
とprivate RestOperations restTemplate
、正しい呼び出しが行われ、値が正しいと検証されます。ただし、プロセッサ内で RestOperations オブジェクトをモックしたいのですが、@ReplaceWithMock を使用すると、restTemplate 変数が null になり、失敗します。このメンバーを分離してモックする方法を見つけることができませんでした。