Я использую 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».
Могу ли я создать модульные тесты с ними, потому что такая же проблема возникла и с интеграционными тестами?
Есть ли способ, которым я мог бы высмеять любой из них или изолировать части данных, чтобы просто проверить методы?