【发布时间】:2017-11-22 14:29:48
【问题描述】:
我想测试嵌入 javascript 小部件(由我的 Rails 应用程序提供)并将表单提交到我的 rails 应用程序中的端点的 3rd 方网站。
为此,我创建了一个虚拟 sinatra 应用程序,并使用 Capybara 进行测试:
# spec/system/widget_spec.rb
require 'sinatra/base'
class DummyApp < Sinatra::Base
get '/form' do
@widget_code = params[:widget_code]
erb :form
end
end
require 'rails_helper'
...
我正在定义这个应用程序之前 Rails 被加载到我的规范中,所以我可以在routes.rb 中执行以下操作:
mount DummyApp => '/dummy' if defined? DummyApp
如果我只运行这一个规范,这可行,但如果我运行整个套件,Rails 会在我的 DummyApp 定义之前加载。
理想情况下,我希望将这条线完全从routes.rb 中提取出来,并允许我的测试注入自定义路由,这样我的路由文件就不会被与测试相关的路由弄得乱七八糟。
1) 有没有办法在测试中修改 rails 路线?
2) 如果不是,那么测试这种场景的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails rspec ruby-on-rails-5 rspec-rails