Grails Spock GORM returns 一个空列表
Grails Spock GORM returns an empty list
我正在使用 grails GORM 构建单元测试。当我调用 list() 方法接收数据时,列表 return 是空的。
这是控制器代码:
println "entity = "+Entity.get(1)
println "list = "+NotificationProfile.list().size()
params.max = Math.min((params.max as Integer) ?: 10, 100)
User user = User.get(springSecurityService.principal.id)
println "user = "+user
NotificationProfile.List().size returns 0
User.get(springSecurityService.principal.id) returns null
这是规范代码:
@Rollback
@TestFor(NotificationProfileController)
@Mock([NotificationProfile, Entity, User])
class NotificationProfileControllerSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "list by system admin"() {
when:
controller.springSecurityService = [principal: [id: 5]]
controller.list()
then:
view == '/notificationProfile/list'
}
}
如果我能有一个很好的 return 列表大小和一个非空用户,我会很高兴。谢谢
当您进行单元测试时,Grails 不会使用您的数据库连接,因此,对于每个单元测试,都没有数据。
为了在单元测试的生命周期内填充数据库 运行,您可以在 setup() 方法中添加数据。
def setup() {
// make sure you are creating a new user with all the required fields
// otherwise GORM will throw validation error
new User(username: "test", email:"test@test.com").save flush:true, failOnError:true
}
模拟 springSecurityService 怎么样
import grails.plugin.springsecurity.SpringSecurityService
import grails.test.mixin.TestFor
import spock.lang.Specification
import spock.lang.Unroll
@TestFor(NotificationProfileController)
@Mock([NotificationProfile, Entity, User])
class NotificationProfileControllerSpec extends Specification {
def springSecurityService
def setup() {
springSecurityService = Mock(SpringSecurityService)
controller.springSecurityService = springSecurityService
}
void "list by system admin"() {
given:
User user = new User()
when:
controller.list()
then:
1 * springSecurityService.getPrincipal() >> user
and:
view == '/notificationProfile/list'
}
}
我正在使用 grails GORM 构建单元测试。当我调用 list() 方法接收数据时,列表 return 是空的。 这是控制器代码: println "entity = "+Entity.get(1)
println "list = "+NotificationProfile.list().size()
params.max = Math.min((params.max as Integer) ?: 10, 100)
User user = User.get(springSecurityService.principal.id)
println "user = "+user
NotificationProfile.List().size returns 0 User.get(springSecurityService.principal.id) returns null
这是规范代码:
@Rollback
@TestFor(NotificationProfileController)
@Mock([NotificationProfile, Entity, User])
class NotificationProfileControllerSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "list by system admin"() {
when:
controller.springSecurityService = [principal: [id: 5]]
controller.list()
then:
view == '/notificationProfile/list'
}
}
如果我能有一个很好的 return 列表大小和一个非空用户,我会很高兴。谢谢
当您进行单元测试时,Grails 不会使用您的数据库连接,因此,对于每个单元测试,都没有数据。
为了在单元测试的生命周期内填充数据库 运行,您可以在 setup() 方法中添加数据。
def setup() {
// make sure you are creating a new user with all the required fields
// otherwise GORM will throw validation error
new User(username: "test", email:"test@test.com").save flush:true, failOnError:true
}
模拟 springSecurityService 怎么样
import grails.plugin.springsecurity.SpringSecurityService
import grails.test.mixin.TestFor
import spock.lang.Specification
import spock.lang.Unroll
@TestFor(NotificationProfileController)
@Mock([NotificationProfile, Entity, User])
class NotificationProfileControllerSpec extends Specification {
def springSecurityService
def setup() {
springSecurityService = Mock(SpringSecurityService)
controller.springSecurityService = springSecurityService
}
void "list by system admin"() {
given:
User user = new User()
when:
controller.list()
then:
1 * springSecurityService.getPrincipal() >> user
and:
view == '/notificationProfile/list'
}
}