Grails 4 单元测试:“为类配置的无效连接 [ALL]...”

问题描述

我在测试配置了多个数据源的 Grails 4 时遇到问题。

域类

@GrailsCompileStatic
@EqualsAndHashCode(includes = 'authority')
@ToString(includes = 'authority',includeNames = true,includePackage = false)
class Role implements Serializable {

    String authority

    static constraints = {
        authority nullable: false,blank: false,unique: true
    }

    static mapping = {
        datasource ConnectionSource.ALL
    }
}

测试类

class RoleSpec extends Specification implements DataTest {

    void setupSpec() {
        mockDomain Role
    }

    void "test nothing"() {
        expect:
        true
    }
}

我收到此错误


Invalid connection [ALL] configured for class [class us.cloudcard.api.Role]
org.grails.datastore.mapping.core.exceptions.ConfigurationException: Invalid connection [ALL] configured for class [class us.cloudcard.api.Role]
    at org.grails.datastore.mapping.simple.SimpleMapDatastore$4.getDatastoreForQualifier(SimpleMapDatastore.java:256)
    at org.grails.datastore.mapping.simple.SimpleMapDatastore$4.getStaticApi(SimpleMapDatastore.java:226)
    at org.grails.datastore.gorm.GormEnhancer.registerEntity(GormEnhancer.groovy:154)
    at org.grails.datastore.mapping.simple.SimpleMapDatastore$3.persistentEntityAdded(SimpleMapDatastore.java:218)
    at org.grails.datastore.mapping.model.AbstractMappingContext.addPersistentEntities(AbstractMappingContext.java:288)
    at grails.testing.gorm.DataTest$Trait$Helper.mockDomains(DataTest.groovy:80)
    at grails.testing.gorm.DataTest$Trait$Helper.mockDomain(DataTest.groovy:65)
    at grails.testing.gorm.DataTest$Trait$Helper.mockDomain(DataTest.groovy:64)
    at us.cloudcard.api.RoleSpec.setupSpec(RoleSpec.groovy:10)

application.yml

environments:
  development:
    dataSource:
      pooled: true
      driverClassName: com.MysqL.jdbc.Driver
      (rest of the dev datasource ...)
  test:
    dataSource:
      dbCreate: update
      url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
    dataSources:
      readReplica:
        dbCreate: update
        url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE

我不知道该去哪里解决这个问题,所以我可以使用你能提供的任何帮助。

谢谢!

解决方法

我明确列出了每个数据源,并解决了问题。

@objc func readSelectionFromPasteboard(_: NSPasteboard) -> Bool
{
    return true
}

但我真的不喜欢这个。我不明白为什么 static mapping = { cache true datasources([ConnectionSource.DEFAULT,'readReplica']) } 不起作用,因为 docs 说它应该起作用。

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...