2010-08-23 33 views
13

Tôi hiện đang làm việc trên một plugin Rails được sử dụng để tạo thẻ meta HTML cụ thể cho iPhone. Tôi đang cố gắng sử dụng ActionView :: TestCase cho các bài kiểm tra đơn vị nhưng tiếp tục nhận được lỗi tương tự. Xem nội dung tệp và lỗi bên dưới. Bất kỳ ý tưởng hoặc trợ giúp nào cũng sẽ được đánh giá cao.Trình kiểm tra chế độ xem thử nghiệm

test_helper.rb

require 'rubygems' 
require 'test/unit' 
require 'active_support' 
require 'action_view' 
require File.join(File.dirname(__FILE__), '..', 'lib', 'iphone_helper') 

iphone_test_helper.rb

require 'test_helper' 

class IphoneHelperTest < ActionView::TestCase 
    test 'br' do 
    tag = tag('br') 
    assert_tag_in tag, '<br />' 
    end 
end 

lỗi

RuntimeError: In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers 
+0

OK, đây có thể là một câu hỏi ngu ngốc, có thể là, nhưng bạn đã thử thêm dòng bao gồm nó đưa ra trong thông báo lỗi? – jasonpgignac

+0

Có, tôi đã thử thêm các dòng mà đã cho tôi một lỗi 'uninitialized liên tục IphoneHelperTest :: Rails' –

+0

Ok, chỉ đoán, nhưng có lẽ dòng url_helpers cần phải được bao gồm trong thử nghiệm helper thay vì cá nhân thử nghiệm trường hợp? –

Trả lời

4

Awful và h workaround acky mà làm việc cho tôi (vì tôi đang làm việc trên một viên ngọc và không ở trong một môi trường đường ray đầy đủ):

require 'ostruct' 

module ActionController::UrlFor 
    def _routes 
    helpers = OpenStruct.new 
    helpers.url_helpers = Module.new 
    helpers 
    end 
end 
1

Bạn có cố gắng bao gồm the respective Module một cách old-fashioned ?:

include ActionDispatch::Routing::RouteSet 

Nếu số NameError được nêu ra cho bạn biết rằng ActionDispatch không xác định bạn có thể phải require 'action_dispatch'.

0

Có thể là một câu hỏi ngu ngốc, nhưng thực tế là tên lớp và tên tệp không khớp với một vấn đề có thể xảy ra (IphoneHelperTest so với iphone_test_helper.rb)? Đôi khi điều đó dẫn đến các lớp không được tải.

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