4

在 Grails 2.1.x 中,我想为集成测试创建一个额外的数据源,以便我可以验证我的服务是否正在从用户指定的数据源动态提取数据。目前我的测试非常简单,例如:

@Test
void "get Action Types by data source name returns all action types"() {
    new ActionCache(actionType: 'Action Type 1').test.save()
    new ActionCache(actionType: 'Action Type 2').test.save()
    new ActionCache(actionType: 'Action Type 3').save()

    def result = reportService.getActionTypesByDataSource('test')
    assert result.size() == 2
}

如果我在名为 DataSource.groovy 的测试环境中配置一个新的数据源,我可以通过测试test,但是新的数据源会出现在我的所有测试中;单元和集成。理想情况下,我想创建一个新的数据源作为集成测试的一部分,使用如下:

def grailsApplication

@Before
void setUp() {
    grailsApplication.config.dataSource_test = {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE"
    }
}

但似乎数据源是在运行集成测试之前加载的,我不知道如何添加到它们。

4

1 回答 1

0

听起来自定义环境可能是要走的路。在 DataSource.groovy 中,您应该看到如下所示的部分:

test {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}

我会在测试块之后添加一个名为 integrationTest 的自定义环境,如下所示:

integrationTest {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:myinttestDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}

要在这个自定义环境中运行,您可以像这样启动 grails 应用程序:

grails -Dgrails.env=integrationTest run-app

希望这可以帮助。

于 2013-03-08T18:53:32.743 回答