2010-02-11 5 views

Antwort

39

Fügen Sie das ActionView::Helpers::DateHelper Modul in Ihre test_helper.rb oder test.rb Dateien ein. Und das ist es, von der Testkonsole:

>> 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" 
+1

Argh, das hat mich wirklich für eine Schleife, sheesh, ich hatte diesen Code in einer Initialisierungsdatei und es konnte die Methode nicht finden. Vielen Dank! – Bob

+0

Great Job, thanx –

+0

der Konsole können Sie auch Hilfsfunktionen mit 'irb (main) zuzugreifen: 110: 0> helper.time_ago_in_words 3.minutes.ago' – Chloe

-1

Was genau möchten Sie testen? Sie sollten das Verhalten von time_ago_in_words nicht selbst überprüfen müssen, da dies von Rails eigenen Tests abgedeckt wird. Wenn Sie einen Ihrer eigenen Helfer testen, der time_ago_in_words verwendet, kann die Ausgabe in einem Hilfstest überprüft werden (der von ActionView::TestCase erbt).

Funktionstests werden für die Überprüfung des Verhaltens von Controllern bestimmt (welche Vorlage sie übertragen sie, ob sie den Zugang ermöglichen, umleiten, etc.), die für die Anwesenheit von bestimmten HTML-Tags Überprüfung können, umfassen (von id). Ich versuche normalerweise zu vermeiden, sie zu verwenden, um die Inhalt von die Tags zu überprüfen.

+0

Warum abgelehnt? –

0

Ich hatte ein ähnliches Problem vor kurzem, wo ich diese Funktion von einem API zuzugreifen versuche, so dass ich es in einem Edelsteine ​​genannt timeywimey gewickelt. Überprüfen Sie es heraus: https://github.com/onetwopunch/timeywimey#usage

Es ermöglicht Ihnen, auf diesen Helfer von überall in einem Rails-Projekt sowie Sinatra und einem nativen Ruby-Projekt zuzugreifen.

0

Ich habe auf rails_helper.rb

config.include ActionView::Helpers::DateHelper 

und Arbeit, danke der @jpemberthy!