【发布时间】:2016-08-31 07:40:30
【问题描述】:
我想用相关的 JPQL 测试 CRUD 存储库:
@Repository
public interface UserRolesRepository extends CrudRepository<UserRoles, Long> {
@Query("SELECT a.role FROM UserRoles a, UserEntity b WHERE b.username=?1 AND a.id=b.id")
public List<String> findRoleByUserName(String name);
}
我的问题是模拟与 UserEntity 相关的存储库。我试图模拟用户存储库的方法,但它们似乎从未被调用过。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = BlogCmsApplication.class)
public class UserRolesRepositoryTest {
@Autowired
UserRolesRepository userRolesRepository;
@Mock
UserRepository userRepository;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void findRoleByUserName() throws Exception {
UserEntity user = new UserEntity("user467","somepass");
user.setId(1);
Mockito.when(userRepository.findByUsername(user.getUsername())).thenReturn(user);
Mockito.when(userRepository.findOne(user.getId())).thenReturn(user);
Mockito.when(userRepository.exists(user.getId())).thenReturn(true);
UserRoles role = new UserRoles(1,"ROLE_USER");
userRolesRepository.save(role);
List<String> actualRole;
actualRole = userRolesRepository.findRoleByUserName(user.getUsername());
List<String> expectedRole = new ArrayList<>();
expectedRole.add(role.getRole());
assertNotNull(actualRole);
assertEquals(expectedRole,actualRole);
}
@Autowired 可以正常工作,但这不是重点。
断言错误是
Expected :[ROLE_USER]
Actual :[]
【问题讨论】:
标签: java spring unit-testing junit mockito