17 Stimmen

Wie ruft man 'time_ago_in_words' aus einem FunctionalTest auf?

Ich verwende die Funktion "time_ago_in_words" in einer Ansicht, und ich muss die Ausgabe in der FunctionalTest testen.

Aber der Test kann die Hilfsfunktion "time_ago_in_words" nicht sehen.

Was muss ich tun, um diese Hilfsmethoden von FunctionalTests verwenden zu können?

41voto

jpemberthy Punkte 7353

Fügen Sie die ActionView::Helpers::DateHelper Modul in Ihrem test_helper.rb o test.rb Dateien. Und das war's, von der Testkonsole aus:

>> time_ago_in_words(3.minutes.from_now)
NoMethodError: undefined method `time_ago_in_words' for #<Object:0x3b0724>
from (irb):4
from /Users/blinq/.rvm/rubies/ruby-1.9.1-p376/bin/irb:15:in `<main>'
>> include ActionView::Helpers::DateHelper
=> Object
>> time_ago_in_words(3.minutes.from_now)
=> "3 minutes"

1voto

rld Punkte 2113

Ich fügte hinzu rails_helper.rb

config.include ActionView::Helpers::DateHelper

und Arbeiten, danke @jpemberthy!

0voto

onetwopunch Punkte 3199

Ich hatte vor kurzem ein ähnliches Problem, wo ich versuchte, diese Funktion von einer API zugreifen, so wickelte ich es in einem Edelstein namens timeywimey. Probieren Sie es aus: https://github.com/onetwopunch/timeywimey#usage

Es ermöglicht den Zugriff auf diesen Helper von überall in einem Rails-Projekt sowie Sinatra, und ein natives Ruby-Projekt.

-1voto

Alex Reisner Punkte 28344

Was genau versuchen Sie zu testen? Sie sollten nicht das Verhalten von time_ago_in_words selbst, denn das wird von Rails' eigenen Tests abgedeckt. Wenn Sie einen Ihrer eigenen Helper testen, der time_ago_in_words kann die Ausgabe in einem Hilfstest überprüft werden (der von ActionView::TestCase ).

Funktionstests dienen der Überprüfung des Verhaltens von Controllern (welche Vorlage sie wiedergeben, ob sie den Zugriff zulassen, umleiten usw.), was die Überprüfung der Vorhandensein von bestimmte HTML-Tags (nach id). Ich versuche in der Regel zu vermeiden, sie zur Überprüfung der Inhalt von die Tags.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X