繁体   English   中英

在我的rspec测试套件中,如何用我的应用程序使用的配置数据填充静态表?

[英]in my rspec test suite, how can I populate a static table with config data my app uses?

到目前为止,我仅使用rspec和factory,而不使用夹具或种子数据。 但是现在我需要一个(静态)Coupon表,其中包含十几个配置数据记录,以便在运行集成测试(rspec + capybara,而不是cuke)时对我的应用程序可用。

我的rspec测试有一个创建商店的FactoryGirl工厂。

在我的应用中,通过init_store(coupon_code)初始化商店时,将传入优惠券代码,以打开/关闭各种功能(通过在Coupon表中查找该优惠券的设置)。

因此,当我创建商店工厂时,我还需要指定(通过特征?)优惠券代码。 然后,在我的模型中,初始化商店的方法将使用优惠券代码在Coupon表中查找一堆设置。 (每个优惠券都有大约20个属性,可以打开/关闭各种商店功能。)

我的coupons.yml文件包含我的应用程序使用的实际优惠券表数据。 现在,我需要在运行测试时将它们提供给应用程序。 (不必关心“脆性”,此表不会更改。)

在没有使用rspec的夹具或种子数据的情况下,我不确定如何/在何处放置coupons.yml文件以及如何将优惠券“加载”到测试优惠券表中,以便在测试运行时将其提供给我的应用程序。

我是否可以使用coupons.yml预先填充种子数据? 如果是这样,每次运行测试时如何将其加载到测试数据库中?

还是我应该使用固定装置?

无论哪种方式,coupons.yml都应该放在哪里,以及如何加载它(在Store工厂中?在一种规格中?在specs_helper中?)

当我搜索“使用固定装置和工厂”或“使用带有rspec的种子数据”之类的东西时,我发现的建议是“使用工厂”,是的,我明白了。 但是对于这种特殊情况,我同时需要两者,因此将不胜感激。

我做这样的事情,我使用种子而不是夹具(尽管我确定您也可以使用夹具)。

在spec_helper.rb中

RSpec.configure do |config|

  ...

  config.before :suite do
    DatabaseCleaner.strategy = :truncation, {:except => %w[table1 table2]}
    DatabaseCleaner.clean_with :truncation
    Rails.application.load_seed
  end

  ...

end

因此,DatabaseCleaner.strategy行告诉数据库清洁程序清除除传递它的表数组之外的所有内容。

设置策略后,只需调用Rails.application.load_seed即可加载种子数据。

希望对您有所帮助,如有任何疑问,请与我们联系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM