テスト用にモック化されたバージョンを含む Bean を@FeignClient
作成するだけで、アノテーションを介して作成された Bean をオーバーライドすることは可能ですか?@Configuration
私はすでにそれを試しましたが、@FeignClient
Bean が最後に作成されたようです (またはそう思う)。私のテストでは、モックされたバージョンではなく、実際のバージョンが常に注入されます。@Component
同じ構成ファイルで、実際の名前を使用するだけで同じようにモックされた(を除く) 注釈なしで作成された別の Bean があり、完全に機能します。
私は@MockBean
それをモックするために使用しようとしましたが、それは機能しますが、プロジェクトにはいくつかの癖があり、別のSpringコンテキストを作成するとテストが中断されます。
ありがとう。
編集。@Configuration
実際、テストをデバッグしたところ、Feign クライアントと同じ名前を使用すると、デバッガーがBean で停止してモック バージョンを作成することさえできないことに気付きました。名前を別の名前に変更しても機能しますが、同じタイプの別の Bean が新しい名前で作成されるだけです。ここで不足している構成はありますか?
EDIT 2.これはサンプルコードです。私が持っているこれを実行すると、それBarService
はモックされたバージョンですFooService
が、実際のものです。
@FeignClient(name = "fooService")
public interface FooService {
}
@Component
public class BarService {
}
@Configuration
public class ConfigClass {
@Bean
public FooService fooService() {
return Mockito.mock(FooService.class);
}
@Bean
public BarService barService() {
return Mockito.mock(BarService.class);
}
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
@SpringBootTest
public class TestClass {
@Autowired
private FooService fooService;
@Autowired
private BarService barService;
@Test
public void test() {
System.out.println(fooService.getClass());
}
}