我正在尝试使用放心测试 REST Controller (使用 Quarkus)端点。我想模拟一个注入(inject)该 Controller 的类(最好使用 Mockio),但仅用于我的一个测试。或者在每个测试用例中获得不同的行为,而不必为每个测试设置单独的类。我不知道该怎么做?
我已经从文档中看到了这样做的方式:
@Mock
@ApplicationScoped
public class MockExternalService extends ExternalService {
@Override
public String service() {
return "mock";
}
}
但这只会让我对所有测试使用一个模拟,而不是像使用 Mockito 那样模拟基于测试的某些行为。我认为?我尝试创建一个模拟并使用@Mock 对其进行注释
@Mock
public TableExtractorService tableExtractorServiceMock = Mockito.mock(TableExtractorService.class);;
但是当我使用它时,我仍然得到了真正的实现。我在我的 Controller 中使用带有 @Inject 注释的构造函数,它采用 TableExtractorService。有关更多信息,我使用 reassured 的测试如下所示:
InputPart filePart = Mockito.mock(InputPart.class);
Mockito.when(tableExtractorServiceMock.Extract(anyObject()))
.thenThrow(IOException.class);
final InputStream inputStream = filePart.getBody(InputStream.class, null);
given()
.multiPart("file", inputStream)
.when().post("/document")
.then()
.statusCode(500);
该端点调用我要模拟的服务类,并且我希望该模拟返回异常。
最佳答案
根据Quarkus test documentation , 你可以使用 @QuarkusMock或 @InjectMock .
关于java - 如何使用 Quarkus/RestAssured 仅为一个测试用例注入(inject)模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57868543/