我想测试第三方网站嵌入javascript小部件(由我的Rails应用程序提供)并将表单提交到我的rails应用程序中的端点。
为此,我创建了一个我用Capybara测试的虚拟sinatra应用程序:
# 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
如果我只运行这个规范,这是有效的,但如果我运行整个套件,则在定义DummyApp之前加载Rails。
理想情况下,我希望完全从routes.rb
中删除此行,并允许我的测试注入自定义路由,因此我的路径文件不会与测试相关的路径混乱。
1)有没有办法在测试中修改rails路由?
2)如果没有,那么测试此类情景的最佳方法是什么?
答案 0 :(得分:1)
您可以使用(docs)帮助with_routing
:
with_routing do |set|
set.draw do
mount DummyApp => '/dummy'
end
# ...
end