サニタイズテスト

ruby ruby-on-rails

私の_application_helper.rb_にこれがあります。

def bbcode(text)#コードスニペット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クラススタイル))#埋め込みのtext.gsub!(/ \ [gist \](。*?)\ [\ / gist \] /){$ 1.split( "").map {|要旨| ""}}

#はネストされた引用符を許可しますbbquote(text)

#属性のない引用text.gsub!(/ \ [quote \](。*?)\ [\ / quote \] / mis){"" << $ 1 << ""}

#端末の例text.gsub!(/ \ [term \](。*?)\ [\ / term \] / mi){"" << << 1.gsub(/ ^ \ r \ n /、 "")。 gsub( "<"、 "<")。gsub( ">"、 ">")<< ""}

#URL text.gsub!(/ \ [url = ["]?(。*?)[" ']?\](。*?)\ [\ / url \] / mis){"" << $ 2 << ""}

# 取扱注意... bbcode_ext(テキスト)終了

良いRails開発者として、私はこのメソッドのテストを書くことを試みました:

必須File.dirname(__ FILE__) '/../spec_helper'はApplicationHelperを記述し、 "general"はApplicationHelperを含みますか?二重引用符を正しくカプセル化する必要があります。内に[/ quote] QUOTE OUTSIDE [/引用] ')。eql( "子猫は書いた:犬は書いた:QUOTE OUTSIDE")end end
このテストを実行しようとすると、Spec

Rails :: Example :: HelperExampleGroup :: Subclass_1:Classに対してこのエラーが発生します。 ‘undefined method’ white_list_sanitizer ‘

これは、 `Spec

Rails :: Example :: HelperExampleGroup :: Subclass_1:Class`!=` ActionView :: Base`のためです。 sanitizeメソッドを使ったこのコードをテストするにはどうすればいいですか?

  1  0


ベストアンサー

ミックスインの仕様はミックスインを単独でテストしたいと仮定しています – ミックスインは仕様にミックスインされているので、そこにあると思われるメソッドをモックする必要があります。 したがって、この場合は「サニタイズ」をモックすることができます。

ただし、ここでは、呼び出しが目的の動作になるようにサニタイズすることを実際にテストしたいようです。したがって、ヘルパーを単独でテストするのではなく、ビューオブジェクトと統合してテストしたいのですが

それで、あなたのスペックにActionView

Baseを拡張するオブジェクトを作成し、あなたのヘルパーをミックスインし、そしてそのオブジェクトであなたのスペックを実行してください。

クラスAView <ActionView :: Base include ApplicationHelper end

AViewについて説明する

それは "二重引用符を正しくカプセル化する必要があります" do AView.new.bbcode( '[引用= "子猫"] [引用= "犬"]引用内[/引用]引用外[/引用]')。do eql( "Kitten書いた:犬書いた:QUOTE OUTSIDE ")end end

1


タイトルとURLをコピーしました