【问题标题】:How to use ruby-on-rails fixtures for setting up (external) data that does not belong to the rails app DB?如何使用 ruby​​-on-rails 固定装置来设置不属于 rails 应用程序数据库的(外部)数据?
【发布时间】:2011-04-29 09:48:46
【问题描述】:

根据我的要求,我创建了一些模型来查询外部数据库(不同于 rails 应用程序使用的数据库)以获取某些数据。

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

我以为我可以将数据放在 yml 文件中并将其加载到哈希中,但它确实成功了 :(

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

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

  • 但我遇到了以下错误

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. 做我想做的事的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails fixtures


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的建议。我认为它把我带向了正确的方向。但我不太确定如何让我的测试 ENV 使用这些数据。此外,我的 ext_db 模型中有许多不同的方法可以提取各种数据(将来我必须添加更多),所以如果我可以轻松创建更多测试数据,对我来说会更容易。这就是我考虑在哈希中加载 YAML 文件的原因。
    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2010-12-28
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多