У меня есть это в моем application_helper.rb :
def bbcode(text)
# Code snippets
text.gsub!(/\[code=?["']?(.*?)["']?\](.*?)\[\/code\]/mis) { CodeRay.scan($2.strip, $1.to_sym).div(:line_numbers => :table)}
text = sanitize(text, :tags => %w(span div table tr td br pre tt), :attributes => %w(id class style))
# Gist embedding
text.gsub!(/\[gist\](.*?)\[\/gist\]/) { $1.split(" ").map { |gist| "<script src='http://gist.github.com/#{gist}.js'></script>" } }
# allows for nested quotes
bbquote(text)
# non-attributed quote
text.gsub!(/\[quote\](.*?)\[\/quote\]/mis) { "<div class='center'><div class='quote'>" << $1 << "</div></div>" }
# Terminal example
text.gsub!(/\[term\](.*?)\[\/term\]/mi) { "<span class='term'>" << $1.gsub(/^\r\n/,"").gsub("<","<").gsub(">",">") << "</span>" }
# URLs
text.gsub!(/\[url=["']?(.*?)["']?\](.*?)\[\/url\]/mis) { "<a rel='nofollow' href='" << $1 << "'>" << $2 << "</a>" }
# handle with care...
bbcode_ext(text)
end
Как хороший разработчик Rails, я попытался написать тест для этого метода:
require File.dirname(__FILE__) + '/../spec_helper'
describe ApplicationHelper, "general" do
include ApplicationHelper
it "should correctly encapsulate double quotes" do
bbcode('[quote="Kitten"][quote="Dog"]QUOTE INSIDE[/quote]QUOTE OUTSIDE[/quote]').should eql("<div class='center'><div class='quote'><b>Kitten wrote:</b><div class='center'><div class='quote'><b>Dog wrote:</b></div></div>QUOTE OUTSIDE</div></div>")
end
end
Когда я иду, чтобы запустить этот тест, однако я получаю эту ошибку undefined method 'white_list_sanitizer' for Spec::Rails::Example::HelperExampleGroup::Subclass_1:Class
Это потому, что Spec::Rails::Example::HelperExampleGroup::Subclass_1:Class
! = ActionView::Base
. Как проверить этот код, который использует метод sanitize?