我一直在使用javax.sql.DataSource来处理我的服务中的sql查询:
class SomeService {
javax.sql.DataSource datasource
def someFoo(foo) {
def sql = new Sql(dataSource)
def query = "SELECT DISTINCT * FROM someDomain WHERE FOO = ${foo}"
def result = sql.rows(query)
return result
}
}
我已经为服务创建了一些单元测试
class SomeServiceTests extends GrailsUnitTestCase {
def service
protected void setUp() {
super.setUp()
service = new SomeService()
}
def testSomeFoo() {
service.datasource = new javax.sql.DataSource
def result = service.someFoo("foo")
assertNotNull result
}
}
我相信我的服务运行良好。 但是,我从测试中得到以下错误:
Caused an ERROR
Must specify a non-null Connection
java.lang.NullPointerException: Must specify a non-null Connection
所以,这是测试框架的问题还是我在这里遗漏了什么? 我也用executeQuery尝试了类似的情况,但是它也抛出了“MissingMethodException”。
我可以使用这些进行单元测试,因为集成测试也会出现同样的问题吗?
有什么方法可以模拟其中任何一个或隔离数据部分,以便只验证方法?