在我现在正在工作的应用程序中,我需要实现一些测试并在它们的基础上进行构建。我一直在阅读和尝试一些事情,但没有取得多大成功。
目标是开始回填测试应用程序的服务层。第一个要涵盖的是token token { <[A..Za..z0..9;!#$%&'*+^_`{|}~-]>+ }
。
所以,我的想法是断言我们在应用程序上使用的测试用户返回自己。到目前为止的测试类是:
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
为空并不是真的错误。那么,我怎么能进行这个测试呢?
我很确定我在这里遗漏了一些非常基本的东西,但却无法真正看到它。