在RSpec Controller规范中测试RJS的最佳方法是使用render_views
和action_view
的render
方法。
首先,在测试文件中添加render_views
,以便在测试中渲染视图。
require 'rails_helper'
RSpec.describe YourController, type: :controller do
render_views
describe "GET #your_action" do
it "renders the correct template" do
get :your_action
expect(response).to render_template("your_action")
end
end
end
接下来,在spec/support
目录下创建一个名为action_view_helper.rb
的文件,并添加以下代码:
module ActionViewHelper
def render_view(template, locals = {})
controller.prepend_view_path "spec/fixtures/views"
controller.render_to_string(template, locals: locals)
end
end
RSpec.configure do |config|
config.include ActionViewHelper, type: :controller
end
这个模块将允许你在控制器测试中使用render_view
方法来渲染视图。
现在,你可以在测试中使用render_view
方法来测试RJS。例如:
require 'rails_helper'
RSpec.describe YourController, type: :controller do
render_views
describe "GET #your_action" do
it "renders the correct template" do
get :your_action
expect(response).to render_template("your_action")
end
it "renders the correct RJS" do
get :your_action
rendered_view = render_view("your_action.rjs")
expect(rendered_view).to include("$('some_element').update('some_content')")
end
end
end
在这个例子中,我们使用render_view
方法来渲染your_action.rjs
视图,并检查渲染后的视图中是否包含了正确的JavaScript代码。
总之,在RSpec Controller规范中测试RJS的最佳方法是使用render_views
和action_view
的render
方法。
领取专属 10元无门槛券
手把手带您无忧上云