【发布时间】:2023-03-25 17:53:02
【问题描述】:
我有 grails 2.4.4 和 Cobertura 作为隐蔽测试。我有这段代码要测试:
def viewMailTemplates(){
User user = User.findByEmail(springSecurityService.authentication.principal)
def token = user.activationToken
def urlActivacion = request.getScheme() + '://' + request.getServerName() +":"+ request.getServerPort() + createLink(controller: "user", action: "activation", params: [token: token])
def srcImage = request.getScheme() + '://' + request.getServerName() +":"+ request.getServerPort()+ "/assets/logoOlu.jpg"
render(view: 'mailTemplates/_activationES', model: [srcImage: srcImage, urlActivacion: urlActivacion])
}
我有这个测试:
@TestMixin(GrailsUnitTestMixin)
@TestFor( UserController )
@Mock([UserController, User])
class UserControllerSpec extends Specification {
void "Test the viewMailTemplates action returns the correct model"() {
when: "The viewMailTemplates action is executed"
controller.viewMailTemplates()
then: "The model is correct"
status == 405
}
但问题是测试模式无法访问数据库并通过此测试,因为 springSecurityService=null
如果我执行“User.get(1)”之类的操作,结果为 null,即使我有这个用户,并且程序(正在开发中)也可以使用 Mysql 与 localhost 中的数据库正常工作
我怎样才能通过这个测试?如何为这个测试创建一个新的springSecurityService?
【问题讨论】:
标签: grails spring-security integration-testing cobertura