我正在开发我的第一个 Scala 应用程序,我们使用 ActiveRecord 样式从 MongoDB 检索数据。
我有像 User 和 Category 这样的模型,它们都有一个使用该特征的伴随对象:
class MongoModel[T <: IdentifiableModel with CaseClass] extends ModelCompanion[T, ObjectId]
ModelCompanion 是一个 Salat 类,它提供了常见的 MongoDB crud 操作。这允许像这样检索数据:
User.profile(userId)
我从来没有使用过这种 ActiveRecord 查询样式。但我知道 Rails 的人正在使用它。我想我在 Play 文档(1.2 版?)上看到了它来处理 JPA。
现在它工作正常,但我希望能够在我的 MongoDB 上运行集成测试。我可以运行带有库的“嵌入式”MongoDB。最重要的是我的主机/端口配置实际上是在MongoModel
类上硬编码的,该类由所有模型伙伴扩展。
我希望能够在运行集成测试(或我将来可以创建的任何其他“配置文件”)时指定不同的主机/端口。
我非常了解依赖注入,在 Java 中使用 Spring 多年,以及我的应用程序中所有这些静态内容的缺点。我看到现在有一种对 Scala 友好的方式来配置 Spring 应用程序,但我不确定在 Scala 中使用 Spring 是否合适。
我已经阅读了一些关于 Cake 模式的东西,它似乎可以做我想做的事,是某种类型安全的、经过编译时检查的 spring 上下文。我一定要使用 Cake 模式,还是 Scala 中还有其他优雅的替代方案?我可以继续使用 ActiveRecord 样式,还是它是可测试性的完全反模式?
谢谢