spring-boot - 测试配置服务抛出 NPE
问题描述
我正在努力编写集成测试,我想测试与 JPA 存储库通信的服务,我似乎犯了一个错误,因为测试无法运行并在我的服务上抛出 NPE。
我的应用程序在 springboot 配置上运行(没有什么奇怪的依赖关系,我想尽可能保持库存以避免副作用)。
我的服务管理用户并且非常简单: - 自动连接的存储库 - 一种调用存储库的方法(我想让测试在添加控制逻辑之前运行)
@Service
public class ApplicationUserService{
@Autowired
private ApplicationUserRepository applicationUserRepository;
public ApplicationUser getUserByFirstname(String firstnameToLookFor){
return this.applicationUserRepository.findByFirstname (
firstnameToLookFor );
}
}
存储库也很简单:
public interface ApplicationUserRepository extends
JpaRepository<ApplicationUser, Integer> {
// ...
ApplicationUser findByFirstname(String firstname);
}
最后我的测试作为其他两个元素非常简单:
@RunWith (SpringRunner.class)
public class UserServiceIntegrationTest {
@TestConfiguration
static class UserServiceTestContextConfiguration {
@Bean
public ApplicationUserService applicationUserService(){
return new ApplicationUserService ();
}
}
@Autowired
private ApplicationUserService applicationUserService;
@MockBean
private ApplicationUserRepository applicationUserRepository;
@Before
public void setup(){
ApplicationUser user = new ApplicationUser ("darky", "bruce@wayne.com",
"iLoveSelin4", "Bruce", "WAYNE", "en");
Mockito.when (applicationUserRepository.findByFirstname (
user.getUsername () )).thenReturn ( user );
}
@Test
public void getUserByFirstName() {
String firstnameToLook = "Bruce";
ApplicationUser userFound = applicationUserService.getUserByFirstname (
firstnameToLook );
assertThat(userFound.getFirstname ()).isEqualTo ( firstnameToLook );
}
}
据说,测试必须没问题。但如前所述,我在断言上抛出了 NPE assertThat(userFound.getFirstname ()).isEqualTo ( firstnameToLook );
,当我在断言上方的行上进行调试时,我可以看到它applicationUserService
为空。
我在这里做错了什么?
谢谢你的帮助!
解决方案
推荐阅读
- powershell - - 用于 powershell 的 Whatif cmdlet
- android - 更新到北极狐后,Android XML 预览不清楚
- php - 是否可以挂钩原生 PHP 函数/对象,从而更容易使用 Fibers API?
- c# - 如何在 jquery 中更新模型视图数据?
- r - 需要帮助来显示图例和与数据相似的颜色代码
- reactjs - React-Query, useQuery 仅在加载完成后返回 undefined
- java - 有没有办法使用 Advice API 获取方法签名?
- android - 如何将参数从 DAO 中的方法传递到 SQL 查询?
- wordpress - WooCommerce Api 可以批量更新库存数量吗?
- javascript - 如何让 div 占据 CSS 网格中的下一行?