繁体   English   中英

将默认映射应用于Grails单元测试中的模拟Mongo域

[英]Apply default mapping to mock Mongo domains in Grails unit test

我已经开始在grails-datastore-gorm-mongodb中使用新的模拟支持。 当与mongodb保持关系时,我的应用程序默认使用域映射来使用引用。 我需要找到一种方法来使模拟蒙哥做同样的事情。 如何在单元测试中应用相同的默认映射?

在Config.groovy中,它看起来像这样:

// configure mongo to use dbrefs:
grails.mongo.default.mapping = { 
  '*'(reference: true)
}

这是我当前使用的代码示例:

import spock.lang.*
import grails.test.mixin.mongodb.MongoDbTestMixin
import com.github.fakemongo.Fongo

@Mixin([MongoDbTestMixin])
class MySpec extends Specification {
  def setup() {
    mongoDomain(new Fongo("test").mongo, [ MyDomain ])
    new MyDomain(name: 'domain').save(validate: false, flush: true)
  }
}

如何将该配置应用于此测试代码?

我正在使用Grails 2.3.9和mongodb 3.0.1插件。

看起来MongoDbTestMixin提供了mongoDomain方法的几种风格:

  1. mongoDomain(Mongo mongo, Collection<Class> persistentClasses) -为给定的Mongo实例和域类为MongoDB域设置GORM
  2. mongoDomain(Map config, Collection<Class> persistentClasses) -为给定的配置和域类为MongoDB域设置GORM

第二个选项允许传递一个配置映射,该映射允许将mongo配置为使用dbrefs(否则,将使用空配置,请参见MongoDbDataStoreSpringInitializer )。 但是,此方法不允许您传递Fongo实例。

您可以尝试:

  1. 要求Grails团队添加一种将两个选项结合在一起的方法(拉动请求?)
  2. 扩展MongoDbTestMixin或创建自己的mixin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM