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

标签 java unit-testing quarkus

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

相关文章:

java - 验证正则表达式 : Make sure it will match at least two characters

quarkus - 响应式(Reactive) Mutiny 代码中是否有有效的 Quarkus OpenTelemetry 支持?

java - 为什么我无法从加速度计传感器获取数据?

java - 如何获取 HTTPRequest 发出的时间?

java - 如何以编程方式启用侧音/麦克风直通

quarkus - 如何在 Quarkus 中将提交 SHA1 显示为我的应用程序版本?

java - Quarkus 使用 -Dnative-image.docker-build=true 构建 native 可执行文件 NoSuchFileException

unit-testing - 单元测试应该包括压力测试吗?

c# - 来自 Func 和 NSubstitute 的模拟结果

ruby-on-rails - 禁用 Rails 中的单元测试生成器