![](/img/trans.png)
[英]How can I execute an RSpec test suite in one app from another app's test suite?
[英]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.