呈现给电子邮件视图的文本是失败的测试

时间:2013-04-24 03:28:22

标签: ruby-on-rails string email rspec

我正在尝试设置一封电子邮件,通知我Rails应用中发生的错误。我在测试中遇到一个小错误,或多或少无法正确陈述我想要的东西。我们只说我的错误包括以下两行

2013-04-23 02:06:06 ERROR -- Errors for OUT6984-20130422-111427-1366647266.5769058.mp3:
2013-04-23 02:06:06 ERROR -- {:phone=>['is invalid']}

当我将此内容写入我的电子邮件时,我的期望如下:

it "contains the right content" do
  @email.should have_body_text("2013-04-23 02:04:56 ERROR -- Errors for OUT6984-20130422-101157-1366643517.5758441.mp3:")
  @email.should have_body_text("2013-04-23 02:04:56 ERROR -- {:phone=>['is invalid']}")
end

但由于......我的测试失败了。

expected the body to contain "2013-04-23 02:04:56 ERROR -- {:phone=>['is invalid']}" but was 
"<!DOCTYPE html> <html> <head> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'> </head> <body> <h1>Errors for 20130423</h1> <br> <p>2013-04-23 02:04:56 ERROR -- Errors for OUT6984-20130422-101157-1366643517.5758441.mp3: 2013-04-23 02:04:56 ERROR -- {:phone=&gt;['is invalid']} </p> </body> </html> "

最终哈希中的>字符用&gt;替换。我该如何解决这个问题,或者以它通过的方式重写测试?测试正在完成我想要的,代码也是如此。我只是不知道如何告诉它 我想要的东西。

1 个答案:

答案 0 :(得分:0)

我不确定你的@email实例变量是什么定义的,而不是

@email.should have_body_text

尝试使用

mail.body.encoded.should match

并检查输出。