cst*_*dev 5 java unit-testing quarkus
我正在尝试使用放心测试 REST 控制器(使用 Quarkus)端点。我想模拟一个注入到该控制器中的类(最好使用 Mockio),但仅限于我的一个测试。或者让每个测试用例获得不同的行为,而不必为每个测试使用单独的类。我不知道该怎么做?
我从文档中看到了这样做的方式:
@Mock
@ApplicationScoped
public class MockExternalService extends ExternalService {
@Override
public String service() {
return "mock";
}
}
Run Code Online (Sandbox Code Playgroud)
但这只允许我对所有测试使用一个模拟,而不是像使用 Mockito 那样根据测试模拟某些行为。我认为?
我尝试创建一个模拟并用 @Mock 对其进行注释
@Mock
public TableExtractorService tableExtractorServiceMock = Mockito.mock(TableExtractorService.class);;
Run Code Online (Sandbox Code Playgroud)
但当我使用它时,我仍然得到了真正的实现。我在控制器中使用带有 @Inject 注释的构造函数,该构造函数采用 TableExtractorService。
有关更多信息,我使用 resassured 进行的测试如下所示:
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);
Run Code Online (Sandbox Code Playgroud)
该端点调用我尝试模拟的服务类,并且我希望该模拟返回异常。
| 归档时间: |
|
| 查看次数: |
12840 次 |
| 最近记录: |