Я пытаюсь создать очень простой API отдыха, используя программирование Spring Reactive, и я хотел также попробовать возможности тестирования с помощью Reactive Stack.
Однако, когда я пытаюсь протестировать реализацию службы, я получаюОшибка нулевого указателя, и это происходит после того, как я вызываю любой метод действия, например: doNext, flatMap, block и т. Д. (В форме userService.save (user) .doNext, userService.save (user) .flatMap, userService.save (user) .block () и т. д.)
Полный код и настройки gradle можно найти в следующем репозитории github: https://github.com/mesarikaya/restAPI
Ваша помощь будет принята с благодарностью.
Ниже приведен тестовый код для быстрого просмотра:
@Slf4j
@ExtendWith(MockitoExtension.class)
public class UserServiceTest {
@Mock
private UserRepository userRepository;
private User existingUser;
private User newUser;
private User returnUser;
private Logger logger = LoggerFactory.getLogger(UserServiceTest.class);
@InjectMocks
private UserServiceImpl userService;
@BeforeEach
public void setUp() {
System.out.println("@Beforeeach is called!");
MockitoAnnotations.initMocks(this);
// Create Existing Account
existingUser = new User();
existingUser.setEmail("abc@gmail.com");
existingUser.setFirstName("First");
existingUser.setMiddleName("Middle");
existingUser.setLastName("Last");
existingUser.setActive(true);
existingUser.setMobileNumber("021234234");
existingUser.setVerified(false);
existingUser.setPermalink("abcgmailcom");
Address address1 = new Address();
address1.setStreetName("asda");
address1.setHouseNumber("asd");
address1.setCity("asdasd");
address1.setCountry("asdasd");
address1.setZipcode("sasd123");
existingUser.setAddress(address1);
// New User
// Create Existing Account
newUser = new User();
newUser.setFirstName("NewFirst");
newUser.setMiddleName("NewMiddle");
newUser.setLastName("NewLast");
newUser.setActive(true);
newUser.setMobileNumber("0123123");
newUser.setVerified(false);
newUser.setOauthId("123123123");
Address address2 = new Address();
address2.setStreetName("ADress2");
address2.setHouseNumber("asda");
address2.setCity("asdsad");
address2.setCountry("asd");
address2.setZipcode("asdasd");
newUser.setAddress(address2);
// newUser.setId((ObjectId) new ObjectIdGenerator().generate());
userService.saveOrUpdateUser(existingUser);
userService.saveOrUpdateUser(newUser);
System.out.println("Existing user: " + existingUser);
System.out.println("New User: " + newUser);
}
@Test
public void findUser(){
User user = userService.saveOrUpdateUser(existingUser).block();
Mono<User> userMono = userService.saveOrUpdateUser(existingUser);
StepVerifier
.create(userMono)
.assertNext(u -> {
assertEquals(existingUser.getEmail(), u.getEmail());
assertEquals(existingUser.getLastName() , u.getLastName());
})
.expectComplete()
.verify();
assertEquals(user.getEmail(), existingUser.getEmail());
assertEquals(user.getId(), existingUser.getId());
}
}
Вот сообщение об ошибке:
FYI- Репозиторий распознан: com.mes.gotogether.repositories.UserRepository $ MockitoMock $ 612061122
java.lang.gotogether.services.UserServiceTest.setUp (UserServiceTest.java:77) в java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в java.base / jdk.internal.reflect.NativeMethol: 62) в java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.base / java.lang.reflect.Method.invoke (Method.java:566) в org.jun.platform.commons.util.ReflectionUtils.invokeMethod (ReflectionUtils.java:532) в org.junit.jupiter.engine.execution.ExecutableInvoker.invoke (ExecutableInvoker.java:115) в org.junit.jupiter.engine.descriptDor.Class.invokeMethodInExtensionContext (ClassTestDescriptor.java:436) по адресу org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda $ synthesizeBeforeEachMethodAdapter $ 14 (ClassTestDescriptor.estjethoho.jetho.org.de.DB.MDB.WD.WD.WD.WD.WD.Emp_Med_D_D_W_D_W_D_D_W_D_W_E_D_T_0_t_0_t_t_t_.TestMethodTestDescriptor.java:136) в org.junit.platform.engine.support.hierarchical.TestMethodTestDescriptor.invokeBeforeEachMethods (TestMethodTestDescriptor.java:135) в org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute (TestMethodTestcripteshoho.jetTjorTjTorTj.TjTenTecT.MDTM.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.WD.W.S.Med.W.59) в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda $ executeRecursively $ 4 (NodeTestTask.java:108) в org.junit.platform.engine.support.hierarchical.ThrowableCollector.ableolCollectorjableol () в org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively (NodeTestTask.java:98) в org.junit.platform.engine.support.hierarchical.NodeTestTask.execute (NodeTava.Text).base / java.util.ierarchical.NodeTestTask.lambda $ executeRecursively $ 4 (NodeTestTask.java:112) в org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute (ThrowableCollector.java:72) в org.form.suunit.pl..NodeTestTask.executeRecursively (NodeTestTask.java:98) в org.junit.platform.engine.support.hierarchical.NodeTestTask.execute (NodeTestTask.java:74) в java.base / java.urayforEjLray: 1540) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll (SameThreadHierarchicalTestExecutorService.java:38)в org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda $ executeRecursively $ 4 (NodeTestTask.java:112)
в org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute (ThrowableCollector.java:72)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively (NodeTestTask.java:98)
в org.junit.platform.engine.support.hierarchical.NodeTestTask.execute (NodeTestTask.java:74)
в org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit (SameThreadHierarchicalTestExecutorService.java:32)
в org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute (HierarchicalTestExecutor.java:57)
в org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute (HierarchicalTestEngine.java:51)
в org.junit.platform.launcher.core.DefaultLauncher.execute (DefaultLauncher.java:220)
в org.junit.platform.launcher.core.DefaultLauncher.lambda $ execute $ 6 (DefaultLauncher.java:188)
в org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams (DefaultLauncher.java:202)
в org.junit.platform.launcher.core.DefaultLauncher.execute (DefaultLauncher.java:181)
в org.junit.platform.launcher.core.DefaultLauncher.execute (DefaultLauncher.java:128)
в com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs (JUnit5IdeaTestRunner.java:74)
в com.intellij.rt.execution.junit.IdeaTestRunner $ Repeater.startRunnerWithArgs (IdeaTestRunner.java:47)
в com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:242)
в com.intellij.rt.execution.junit.JUnitStarter.main (JUnitStarter.java:70)