Я пишу тест поставщика pact в приложении Spring Boot. Контроллер имеет две зависимости, для которых одна из них должна быть смоделирована, а другая - нет.
Поскольку я пишу pact test (который я новичок в этом),Я должен использовать @RunWith(RestPactRunner.class)
поверх моего тестового класса.
в моем тестовом классе я использую @Autowired
для зависимости, которую я не хочу высмеивать, но так как я не могу использовать SpringRunner
, мой тест не знает, как найти зависимость, и оставляет ееas null
.
Вот тест поставщика * :
@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
)? сейчас он остается нулевым