根据我的要求,我已经为一些数据创建了查询外部数据库(不同于rails应用程序使用的数据库)的模型。
我正试图围绕这些模型编写测试,并希望将"样本测试数据"与实际测试分开。
我以为我可以把数据放在一个yml文件,并加载到一个哈希,但它确实工作:(
- 将样例测试数据添加到fixture文件名'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
- 做我想做的事的最好方法是什么?
我猜您的问题是该外部数据库的模式不包含在您的模式中。rb文件和/或迁移。它们用于在运行测试之前设置测试数据库。
因此,尝试将这些fixture写入不存在的表中-结果如上面所示。
单元测试中的多个数据库连接通常很麻烦。考虑为外部依赖项的数据创建一个sqlite文件,并配置您的测试环境来使用这个文件——或者它的一个副本,以防您需要更改数据。