我有一个密码重置邮件程序,我希望能够在我的测试中执行以下操作:
assert_match edit_password_reset_path(user.password_reset_token), mail.body.encoded
# undefined method `edit_password_reset_path' for #<UserMailerTest:0xb6c2ea0>
Run Code Online (Sandbox Code Playgroud)
但是由于URL帮助器,它会爆炸,所以我必须这样做才能让我的测试运行:
assert_match "\/password_resets\/#{user.password_reset_token}\/edit", mail.body.encoded
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但不要看,或感觉,这么好.
似乎ActionMailer :: TestCase不知道路径,因为以下失败:
assert_match "#{edit_password_reset_path(user.password_reset_token)}", mail.body.encoded
# undefined method `edit_password_reset_path' for #<UserMailerTest:0xb6c2ec8>
Run Code Online (Sandbox Code Playgroud)
你如何访问edit_password_reset_path(user.password_reset_token)测试单元中的URL助手?
我从RSpec切换到哪里这从来都不是问题,助手刚刚工作,我会这样做:
it "sends the user a password reset url" do
mail.body.encoded.should match(edit_password_reset_url(user.password_reset_token))
end
Run Code Online (Sandbox Code Playgroud)
对于有兴趣在将来解决此问题的任何人,您可以将其粘贴在您的测试文件中:
include Rails.application.routes.url_helpers
Run Code Online (Sandbox Code Playgroud)
我不知道这是否是你的方式做到这一点,我不知道它有多大的开销会增加你的测试,但它工作正常.
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |