如何在Rails插件中测试视图?

Jam*_*sen 5 ruby testing plugins ruby-on-rails actionview

我正在写一个Rails插件,其中包含一些部分内容.我想测试部分内容,但是我很难设置一个可以渲染它们的测试.没有相关的控制器,所以我只假装一个:

require 'action_controller'
require 'active_support'
require 'action_pack'
require 'action_view'

class MyTest < Test::Unit::TestCase
  def setup
    @renderer = ActionController::Base.new
    @renderer.append_view_path File.expand_path(File.join(File.dirname(__FILE__), '..', 'views'))
  end

  def test_renders_link
    result = @renderer.render(:partial => '/something')
    assert ...
  end
end
Run Code Online (Sandbox Code Playgroud)

但那个:render电话总是爆炸.我尝试使用的是一个ActionView::Base而不是一个ActionController::Base,但这种情况甚至更少.

有人有成功吗?

Jam*_*sen 1

最终答案:

require 'action_controller'
require 'active_support'
require 'action_pack'
require 'action_view'
require 'action_controller/test_case'

class StubController < ActionController::Base
  helper MyHelper
  append_view_path '...'
  attr_accessor :thing
  def my_partial
    render :partial => '/my_partial', :locals => { :thing => thing }
  end
  def rescue_action(e) raise e end;
end

class MyTestCase < ActionController::TestCase
  self.controller_class = StubController
  def setup
    @controller.thing = ...
    get :my_partial
    assert ...
  end
end
Run Code Online (Sandbox Code Playgroud)