4

Grails 2.1.x では、統合テスト用に追加の dataSource を作成して、サービスがユーザー指定の dataSource からデータを動的にプルしていることを確認できるようにしたいと考えています。現在、私のテストは次のように非常に単純です。

@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 でテスト環境用に新しい dataSource を構成すると、テストに合格できますが、新しい dataSourcetestがすべてのテストに表示されます。ユニットと統合。理想的には、次のようなものを使用して、統合テストのセットアップの一部として新しい dataSource を作成したいと思います。

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 に答える