【问题标题】:AssertionError on unit testing service layer (in Java using Spring)单元测试服务层上的 AssertionError(在 Java 中使用 Spring)
【发布时间】:2020-05-22 18:38:22
【问题描述】:

尝试对我的服务层进行单元测试,这是我的测试代码:

@RunWith(MockitoJUnitRunner.class)
public class ServiceCreateUserTest {

    @Mock
    private UserRepository userRepository;

    @InjectMocks
    private UserCreateService userCreateService;

    @Test
    public void when_save_user_it_should_return_user() {
        User user = new User();
        user.setName("Test Name");

        when(userRepository.save(ArgumentMatchers.any(User.class))).thenReturn(new User());

        User created = userCreateService.create(user);

        assertThat(created.getName()).isSameAs(user.getName());
    }
}

这是我的服务代码:

@Service
public class UserCreateService {

    @Autowired
    UserRepository repository;

    public User create(User user) {
        return repository.save(user);
    }
}

运行时出现以下错误:

java.lang.AssertionError: 

期待: 和实际:

 <null>

引用同一个对象

有人能解释一下吗?不确定我的测试代码中缺少什么。也许与我的方法导入有关?

【问题讨论】:

    标签: java unit-testing mockito


    【解决方案1】:

    您在 userRepository.save() 调用中返回了一个新的 User()。因此,当调用 userRepository.save() 时,它会返回一个新的用户对象。而是返回给定的用户。

    when(userRepository.save(ArgumentMatchers.any(User.class))).thenReturn(user);
    

    【讨论】:

      猜你喜欢
      • 2013-03-04
      • 2020-02-10
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多