我试图对Grails进行单元测试,我尝试过的内容如下:
def getMarca(CrDocumento crDocumento) {
if (!crDocumento) {
return null
}
String sql = ""
sql = "select marca.id as marca_id from cr_documento, matricula, cr_renegoc_boleto, oferta_polo_turma, oferta_polo, oferta, marca where cr_documento.id = cr_renegoc_boleto.cr_documento_id and cr_documento.matricula_id = matricula.id and matricula.oferta_polo_turma_id = oferta_polo_turma.id and oferta_polo_turma.oferta_polo_id = oferta_polo.id and oferta_polo.oferta_id = oferta.id and oferta.marca_id = marca.id and cr_documento.id = $crDocumento.id"
def sqlGroovy = new Sql(dataSource)
def marcaId = sqlGroovy.firstRow(sql)?.marca_id
return Marca.findById(marcaId)
}
但我无法模拟Sql Class并看到此错误:
groovy.lang.GroovyRuntimeException:方法groovy.sql.Sql#的模糊方法重载。
由于以下原因重叠原因,无法解析为[null]调用哪个方法: [interface java.sql.Connection]
[interface javax.sql.DataSource]
答案 0 :(得分:0)
查询id的代码应该在一个单独的服务中,然后你可以模拟。
答案 1 :(得分:0)
从此Forum:
服务/数据源定义必须在方法之外进行。 然后Spring会注入豆子。
尝试这样的事情:
FooController {
def dataSource_mydb
def barAction() {
def sql = new Sql(dataSource_mydb)
}
}