我有一个Rails 5.2引擎,我需要有一些系统(与水豚)测试运行在它上面。我也使用工厂,与factory_bot_rails
宝石。
要运行测试,我需要使用命令rails test:app:system
,因为标准rails test:system
给出了一个错误,因为它是一个引擎。因此,系统测试是在虚拟应用程序的上下文中运行的。
在开始之前,它给出了一个错误的Factory xxxx not initialized
,我想是因为所有的工厂都在test/factories
,和虚拟应用程序是在test/dummy
,不能加载它们。
如何对发动机进行系统测试?我认为我的选择是在引擎上下文中运行系统测试,或者将工厂加载到虚拟环境中…
是的,我相信您是对的,因为您需要在引擎上下文中运行测试套件。
我相信你需要:
# rails_helper.rb or spec_helper.rb
require 'factory_bot_rails'
如果事情仍然不稳定,应该能够添加确切的目录:
require 'factory_bot_rails'
FactoryBot.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
FactoryBot.find_definitions
这里解释https://www.hocnest.com/blog/testing-an-engine-with-rspec/
同时,确保在rails_helper.rb
config.include FactoryBot::Syntax::Methods