如何使用 ruby​​-on-rails 固定装置设置不属于 Rails 应用程序数据库的(外部)数据?

发布于 2024-11-04 12:58:55 字数 589 浏览 3 评论 0原文

根据我的要求,我创建了用于查询某些数据的外部数据库(与 Rails 应用程序使用的数据库不同)的模型。

我正在尝试围绕这些模型编写测试,并希望将“样本测试数据”与实际测试分开。

我以为我可以将数据放入 yml 文件并将其加载到哈希中,但它确实有效:(

  • 将示例测试数据添加到固定文件名“external_database.yml”
  • 将以下代码放入设置中的测试文件中

<代码> ext_data = YAML.load_file(Rails.root.to_s + "/test/fixtures/ext_data.yml")

  • 但我遇到了以下错误

1)错误: test_should_errorout_for_invalid_market_zip(ExtDBTest): ActiveRecord::StatementInvalid: Mysql::Error: 表“rails_app_db.ext_data”不存在:从 ext_data 中删除

  1. 做我想做的事情的最佳方法是什么?

Per my requirements, I have created models for querying external database (different from the one that the rails app uses) for some of the data.

I am trying to write tests around these models and want to separate the "sample test data" from the actual tests.

I thought I could put the data in a yml file and load it into a hash, but it did work out :(

  • Added sample test data to a fixture file name 'external_database.yml'
  • Put the below code in setup, in the test file


ext_data = YAML.load_file(Rails.root.to_s + "/test/fixtures/ext_data.yml")

  • But I am stuck with the below error


1) Error:
test_should_errorout_for_invalid_market_zip(ExtDBTest):
ActiveRecord::StatementInvalid: Mysql::Error: Table 'rails_app_db.ext_data' doesn't exist: DELETE FROM ext_data

  1. What is the best way to do what I want done?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

霊感 2024-11-11 12:58:55

我想您的问题是该外部数据库的架构不包含在您的 schema.rb 文件和/或迁移中。这些用于在运行测试之前设置测试数据库。

因此,尝试将这些装置写入不存在的表中 - 其结果如上所示。

单元测试中的多个数据库连接通常很痛苦。考虑为外部依赖项的数据创建一个 sqlite 文件,并配置您的测试环境以使用该文件或它的副本,以防您需要更改数据。

I guess your problem is that the schema of that external database is not contained in your schema.rb-file and/or migrations. These are used to setup your test-database before you run the tests.

So the attempt is made to write those fixtures into non-existing tables - with the result you see above.

Multiple database-connections in unit tests are generally a pain. Consider creating an sqlite-file for the data of the external dependencies and configure your test-environment to use this file - or a copy of it, in case you need to mutate data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文