我通过电子邮件发送包含确认链接的邀请。在我的功能测试中,我想检查邮件正文是否包含正确的URL,如下所示:
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'”)。我想我需要一些导入,但是哪个?
答案 0 :(得分:3)
您可以包含动态生成的url helpers模块,然后使用它定义的任何url helper,如下所示:
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