Unit testing Grails单元测试-测试使用findAllBy*方法的服务
我们在一个项目中使用了Grails2.2.1。我想测试一个服务。在这个服务中,我使用了一个dynamicFinder(findAllBy…),但是在使用域mock的单元测试中使用这个finder的结果是一个空列表。但是当我查看UserRole.list()时,同一用户有3个UserRoles。似乎那个领域。芬达尔比。。。在模拟域中被破坏 域类如下所示:Unit testing Grails单元测试-测试使用findAllBy*方法的服务,unit-testing,grails,gorm,dynamic-finders,Unit Testing,Grails,Gorm,Dynamic Finders,我们在一个项目中使用了Grails2.2.1。我想测试一个服务。在这个服务中,我使用了一个dynamicFinder(findAllBy…),但是在使用域mock的单元测试中使用这个finder的结果是一个空列表。但是当我查看UserRole.list()时,同一用户有3个UserRoles。似乎那个领域。芬达尔比。。。在模拟域中被破坏 域类如下所示: class UserRole implements Serializable { User user Role role stat
class UserRole implements Serializable {
User user
Role role
static mapping = {
table name: "Sec_User_Sec_Role"
id composite: ['role', 'user']
version false
}
}
测试结果如下所示:
@TestFor(UserService)
@Mock([User, UserRole, Role])
@TestMixin([DomainClassUnitTestMixin])
class UserServiceTests {
// setup to create User, UserRole and Role
// test the service
}
class UserService {
....
private List<UserRole> findExistingUserRolePairs (final User user) {
return UserRole.findAllByUser (user)
}
该服务看起来像:
@TestFor(UserService)
@Mock([User, UserRole, Role])
@TestMixin([DomainClassUnitTestMixin])
class UserServiceTests {
// setup to create User, UserRole and Role
// test the service
}
class UserService {
....
private List<UserRole> findExistingUserRolePairs (final User user) {
return UserRole.findAllByUser (user)
}
类用户服务{
....
私有列表findExistingUserRolePairs(最终用户){
返回UserRole.findallbyser(用户)
}
这是单元测试还是集成测试?我不记得单元测试中是否完全支持动态查找程序。您可以尝试将其更改为条件。如果它仍然返回空,请尝试使用此插件:您还可以显示完整的测试用例吗?OP中包含的DomainClassUnitTestMixin应该允许动态查找程序。如果您执行以下操作,它会工作吗mockDomain(UserRole);mockDomain(User)
而不是@Mock
?如何创建和保存UserRole
实例?