cuốn sách gpt4 ai đã làm

java - Mockito thenThrow ném ngoại lệ mockito

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 04:11:40 26 4
mua khóa gpt4 Nike

Tôi đang cố gắng giả lập RestOperation để đưa ra một ngoại lệ, nhưng tôi nhận được MockitoException thay vì lấy ngoại lệ thích hợp. Điều này thật kỳ lạ đối với tôi vì khi tôi cố gắng kiểm tra con đường hạnh phúc, hầu như lệnh gọi giả tương tự đều hoạt động tốt. Có gì sai với điều này:

Mô phỏng công việc:

Mockito.when(restOperations.exchange(
Mockito.anyString(), Mockito.any(), Mockito.>any(),
Mockito.<>>any())).thenReturn(ResponseEntity mới<>(userByRoleHolder, HttpStatus.OK));

Ném giả MockitoException:

Mockito.when(restOperations.exchange(
Mockito.anyString(), Mockito.any(), Mockito.>any(),
Mockito.<>>any())).thenThrow(new ConnectException("Kiểm tra ngoại lệ"));

Đây là cách thực hiện phương pháp của tôi:

ResponseEntity thực thể = null;
thử {
thực thể = RestOperations.exchange(userProfileUrl, HttpMethod.GET,
được ủy quyềnHttpEntityFactory.getAuthorizedHttpEntity(null), UserByRoleHolder.class);
} bắt (RestClientException e) {
ném ConnectException mới (e.getMessage());
}
trả về thực thể.getBody();

Dấu vết ngăn xếp:

Ngoại lệ không mong đợi, được mong đợi nhưng lại là
java.lang.Exception: Ngoại lệ không mong đợi, được mong đợi nhưng lại là
tại org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:28)
tại org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
tại org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
tại org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
tại org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
tại org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
tại org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
tại org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
tại org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
tại org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
tại org.junit.runners.ParentRunner.run(ParentRunner.java:363)
tại org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37)
tại org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62)
tại org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
tại org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
tại org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
tại org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48)
tại sun.reflect.NativeMethodAccessorImpl.invoke0(Phương thức gốc)
tại sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
tại sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
tại java.lang.reflect.Method.invoke(Method.java:497)
tại org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
tại org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
tại org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
tại org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
tại com.sun.proxy.$Proxy2.processTestClass(Không rõ nguồn)
tại org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105)
tại sun.reflect.NativeMethodAccessorImpl.invoke0(Phương thức gốc)
tại sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
tại sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
tại java.lang.reflect.Method.invoke(Method.java:497)
tại org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
tại org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
tại org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360)
tại org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
tại java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
tại java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Nguyên nhân là do: org.mockito.Exceptions.base.MockitoException:
Ngoại lệ đã chọn không hợp lệ đối với phương pháp này!
Không hợp lệ: java.net.ConnectException: Kiểm tra ngoại lệ
tại com.stanleyblackanddecker.toolboxcore.gateway.AuthGatewayTest.testGetAllUsersNoAuthPresent(AuthGatewayTest.java:215)
tại sun.reflect.NativeMethodAccessorImpl.invoke0(Phương thức gốc)
tại sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
tại sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
tại java.lang.reflect.Method.invoke(Method.java:497)
tại org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
tại org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
tại org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
tại org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
tại org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19)
... 37 thêm

câu trả lời hay nhất

Nguyên nhân là do: org.mockito.Exceptions.base.MockitoException: Ngoại lệ đã kiểm tra không hợp lệ đối với phương pháp này! Không hợp lệ: java.net.ConnectException: Ngoại lệ kiểm tra

Như thông báo ngoại lệ đã nói (và được nêu trong phần bình luận), bạn phải ném RestClientNgoại lệ,而不是 Kết nối ngoại lệ:

Mockito.when(restOperations.exchange(
Mockito.anyString(), Mockito.any(), Mockito.>any(),
Mockito.<>>any())).thenThrow(new RestClientException("Kiểm tra ngoại lệ"));

Bạn nhận được thông báo lỗi này vì phương pháp trao đổi tuyên bố rằng không có ngoại lệ nào được ném ra và Kết nối ngoại lệ Đúng ngoại lệ được kiểm tra (tức là phải khai báo khi ném).

Về java - Mockito thenThrow ném ngoại lệ mockito, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/31914632/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress