Spring Boot测试:在不使用`SpringRunner`的情况下使@Autowired正常工作>> [

问题描述 投票:0回答:2
我正在Spring Boot应用程序中编写

pact provider测试

。控制器具有两个依赖关系,其中一个应该被模拟,另一个则不应。由于我正在编写pact test(这是我的新手),所以我必须在测试类的顶部使用@RunWith(RestPactRunner.class)

在测试类中,我对不想模拟的依赖项使用@Autowired,但由于我无法使用SpringRunner,因此我的测试不知道如何找到依赖项并将其保留为null

这里是

pact

提供者测试:@RunWith(RestPactRunner.class) @Provider("provider_name") @PactFolder("target/pacts") public class SampleProviderTest { private MetadataController metadataController; @Mock private BlockService blockService; // dependency #1: to be mocked @Autowired private BlockMapper blockMapper; // dependency #2: to be injected @TestTarget public final MockMvcTarget target = new MockMvcTarget(); @Before public void before() { initMocks(this); metadataController = new MetadataController(blockService, blockMapper); target.setControllers(metadataController); } /* * you can ignore the rest of this test class */ @State("block info") public void blockInfo() { Block requestedBlock = new Block(); when(blockService.getBlockInfo(123L, 12345L, "S1", "B1")).thenReturn(requestedBlock); } }

问题

:-如何获得此测试以为上面的依赖项#2(blockMapper)选择正确的实现?现在它仍然为空我正在Spring Boot应用程序中编写契约提供者测试。控制器有两个依赖关系,其中一个应该被模拟,而另一个则不应该。由于我正在写条约...
spring-boot pact
2个回答
0
投票
使用注解@RunWith(SpringRestPactRunner.class)代替@RunWith(RestPactRunner.class)。使用SpringRestPactRunner代替PactRunner作为Junit的运行器允许我们使用弹簧测试注解。

0
投票
[在不使用@Autowired的情况下努力寻找BlockMapper(实际实现)后,我终于使用mapstructMapper类在测试中找到实现,这就是我的方法:]

@RunWith(RestPactRunner.class) @Provider("provider_name") @PactFolder("target/pacts") public class SampleProviderTest { private MetadataController metadataController; @Mock private BlockService blockService; // dependency #1: to be mocked @TestTarget public final MockMvcTarget target = new MockMvcTarget(); @Before public void before() { initMocks(this); // dependency #2: to be injected BlockMapper blockMapper = Mappers.getMapper(BlockMapper.class); metadataController = new MetadataController(blockService, blockMapper); target.setControllers(metadataController); } /* * removed the remainder... */ }

© www.soinside.com 2019 - 2024. All rights reserved.