В приложении, с которым я сейчас работаю, мне нужно реализовать несколько тестов и использовать их.Я читал и пробовал несколько вещей, но не имел большого успеха.
Цель состоит в том, чтобы начать повторное заполнение тестами уровня обслуживания приложения.Первый, который будет рассмотрен: UserService
.
Итак, моя идея состоит в том, чтобы утверждать, что тестовый пользователь, которого мы используем в приложении, возвращает сам себя.Класс тестирования на данный момент:
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(classes = {ApplicationMain.class})
public class UserServiceTest {
@Mock
CentralData dataProviderMock;
@InjectMocks
private UserService userService;
private <project>User testUser;
private <project>User mockUser;
@Before
public void init() {
MockitoAnnotations.initMocks(CentralData.class);
System.out.println("dataProviderMock: " + dataProviderMock);
System.out.println("userService: " + userService);
userService = new UserService(dataProviderMock);
testUser = createTestUser();
}
private <project>User createTestUser() {
testUser = new <project>User();
testUser.setSystemId("testuser");
testUser.setEmailAddress("testuser@system.com");
testUser.setFirstName("Test");
testUser.setLastName("User");
// save user
userService.save(testUser);
return testUser;
}
@Test
public void whenUserIdIsProvided_thenRetrievedNameIsCorrect() {
mockUser = userService.getUserById("testuser");
when(userService.getUser("testuser")).thenReturn(testUser);
assertEquals(testUser, mockUser);
}
}
На моем UserService
у меня есть это:
public UserService(CentralData dataProvider) {
this.dataProvider = dataProvider;
}
Когда я сохраняю пользователя, смоделированный dataProviderMock
регистрируется на консоличто я ожидаю это войти.Но в самом тесте mockUser
всегда равен нулю.
Я понимаю, что userService
на самом деле не обращается к слою данных и базе данных, поэтому mockUser
, будучи нулевым, не является на самом деле неправильным.Итак, как я могу выполнить этот тест?
Я почти уверен, что упускаю что-то довольно простое здесь, но на самом деле не вижу этого.