我在尝试添加自动连线接口jpa repo的对象时遇到了这个问题。我已经更新了SpringBoot2.2.5版本。发布到2.4.1/Java11和JUnitJupiter。我同时使用@spy和@autowire来模拟jpa存储库,因为initmocks()不受欢迎,所以我使用mockito.openmocks()
这是一个投掷错误
org.mockito.exceptions.misusing.NotAMockException: Argument should be a mock, but is: class org.springframework.data.jpa.repository.support.SimpleJpaRepository
at com.test.services.SampleServiceTest.setUp(SampleServiceTest.java:89)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
@ExtendWith(SpringExtention.class)
@SpringBootTest(classes = TestServer.class)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")
@Transactional
SampleServiceTest {
@Spy
@Autowire
private TestRepo repo;
@Mock
SpecialTest test;
@Mock
SpecialTest1 test1;
@InjectMock
TestServiceTest testService;
@InjectMock
SampleServiceTest sampleServiceTest;
@BeforeEach()
void setup () {
openMocks(this);
when(testService.getId()).thenReturn(test);
when(testService.getId()).thenReturn(test1);
}
@Test
void test () {
}
我试过上述方法
1条答案
按热度按时间3xiyfsfu1#
您应该将@mock用于simplejpeppository,将@injectmock用于在构造函数中采用simplejpeppository的类。此外,您应该使用initmocks(this)例如:
用于初始化mock。
服务示例: