gpt4 book ai didi

java - 如何使用 Quarkus/RestAssured 仅为一个测试用例注入(inject)模拟

转载 作者:行者123 更新时间:2023-12-01 13:45:57 24 4
gpt4 key购买 nike

我正在尝试使用放心测试 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com