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应用程序中编写契约提供者测试。控制器有两个依赖关系,其中一个应该被模拟,而另一个则不应该。由于我正在写条约...@RunWith(SpringRestPactRunner.class)
代替@RunWith(RestPactRunner.class)
。使用SpringRestPactRunner
代替PactRunner作为Junit的运行器允许我们使用弹簧测试注解。@Autowired
的情况下努力寻找BlockMapper(实际实现)后,我终于使用mapstruct
的Mapper
类在测试中找到实现,这就是我的方法:]@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...
*/
}