2010-02-11 14 views
15

Tôi đang sử dụng chức năng 'time_ago_in_words' trong chế độ xem và tôi cần kiểm tra đầu ra trong FunctionalTest.Cách gọi 'time_ago_in_words' từ một FunctionalTest?

Nhưng thử nghiệm không thể thấy chức năng trợ giúp 'time_ago_in_words'.

Tôi nên làm gì để sử dụng các phương pháp trợ giúp này từ FunctionalTests?

Trả lời

39

Bao gồm mô-đun ActionView::Helpers::DateHelper trong các tệp test_helper.rb hoặc test.rb của bạn. Và đó là điều đó, từ bảng điều khiển thử nghiệm:

>> 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, thực sự đã ném tôi cho một vòng lặp, sheesh, tôi đã có mã này trong một tập tin khởi tạo và nó không thể tìm thấy phương pháp. Cảm ơn! – Bob

+0

Công việc tuyệt vời, thanx –

+0

Từ giao diện điều khiển, bạn cũng có thể truy cập các chức năng trợ giúp với 'irb (chính): 110: 0> helper.time_ago_in_words 3.minutes.ago' – Chloe

-1

Chính xác thì bạn đang thử nghiệm gì? Bạn không cần phải xác minh hành vi của time_ago_in_words chính nó, bởi vì nó được bao phủ bởi các thử nghiệm riêng của Rails. Nếu bạn đang thử nghiệm một trong những người trợ giúp của riêng bạn sử dụng time_ago_in_words, đầu ra có thể được kiểm tra trong một thử nghiệm trợ giúp (kế thừa từ ActionView::TestCase).

Kiểm tra chức năng nhằm xác minh hành vi của bộ điều khiển (mẫu cho phép truy cập, chuyển hướng, v.v.) có thể bao gồm việc kiểm tra sự hiện diện của các thẻ HTML nhất định (theo id). Tôi thường cố gắng tránh sử dụng chúng để kiểm tra nội dung của các thẻ.

+0

Tại sao lại bị bỏ phiếu? –

0

Gần đây tôi gặp sự cố tương tự khi tôi đang cố gắng truy cập chức năng này từ API nên tôi đã bọc nó trong đá quý có tên là timeywimey. Hãy khám phá: https://github.com/onetwopunch/timeywimey#usage

Nó cho phép bạn truy cập trình trợ giúp này từ bất kỳ đâu trong dự án Rails cũng như Sinatra và dự án ruby ​​gốc.

0

tôi đã thêm vào rails_helper.rb

config.include ActionView::Helpers::DateHelper 

và làm việc của, cảm ơn của @jpemberthy!

Các vấn đề liên quan