如何使用rspec测试多个数据库?

时间:2016-09-07 01:20:08

标签: ruby-on-rails ruby rspec

这是一个rails项目。我想使用rspec来测试不同数据库的多操作。 这个项目名称是app1。测试数据库是test_database1。我想在另一个项目中使用另一个数据库。 该项目名称为app2。测试数据库是test_database2。 我试图将database2 create_table架构添加到app1项目。我使用factory_girl来生成测试数据 factory :product, :class => App2::Product do。但是,当我运行rspec测试时,它显示了我:

Failure/Error: let(:app2_products) { create(:product) }

ActiveRecord::StatementInvalid:
  Mysql2::Error: Table 'app2_test.products' doesn't exist: SHOW FULL FIELDS FROM `products`
# ./spec/my_spec.rb:4:in `block (2 levels) in <top (required)>'
# ./spec/my_spec.rb:12:in `block (3 levels) in <top (required)>'
# ------------------
# --- Caused by: ---
# Mysql2::Error:
#   Table 'app2_test.products' doesn't exist
#   ./spec/my_spec.rb:4:in `block (2 levels) in <top (required)>'

如何在使用spec?

时在app1中创建app2的database2

EDIT1

我在config / database.yml中添加了app2的测试数据库:

app2_test:
  <<: *app2_default
  database: app2_test

我还将app2的创建表架构添加到了app1的db / schema.rb

create_table "products", force: :cascade do |t|
  t.string "name"
end

但结果是一样的。

0 个答案:

没有答案