2011-11-18 64 views
1

我通過電子郵件發送包含確認鏈接的邀請。在我的功能測試中,我想檢查郵件正文中包含正確的URL是這樣的:ActionMailer測試中的命名路線

class InvitationSenderTest < ActionMailer::TestCase 
    test "invite" do 
    ... 
    url = new_user_url(:www_host => 'localhost', :confirm_key => invitation.confirm_key) 
    assert_match /http:\/\/localhost#{url}/, mail.body.encoded 
    end 
end 

在開始url =線,測試得到一個錯誤說undefined method 'new_user_url',而在ActionController的測試,在同一行工作沒有問題。

我試圖插入線:

include ActionDispatch::Routing 
include ActionView::Helpers::UrlHelper 

類的定義裏面,但無濟於事。我也嘗試使用url_for,但這也不起作用(「未定義的局部變量或方法'_routes'」)。我想我需要一些導入,但哪些?

回答

3

可以包括動態生成的網址助手模塊,然後使用由它像這樣定義的URL幫手:

class InvitationSenderTest < ActionMailer::TestCase 
    include Rails.application.routes.url_helpers 

    test "invite" do 
    ... 
    url = new_user_url(:www_host => 'localhost', :confirm_key => invitation.confirm_key) 
    assert_match /http:\/\/localhost#{url}/, mail.body.encoded 
    end 
end