Rspec / 将纯文本电子邮件模板添加到 rails 中的功能时,水豚失败

Rspec / capybara fails when plain text email templates are added to features in rails

我正在使用以下代码在 rails 中测试 html 电子邮件 (somemail.html.erb) 电子邮件:

last_email = ActionMailer::Base.deliveries.last
fragment = Nokogiri::HTML::fragment(last_email.body.raw_source)
fragment.at_css('[id="some-id"]').attr('href')

这会在代码中查找带有 id 的 link,然后获取 url 以便稍后在测试中跟进。

但是,如果我添加一个 somemail.text.erb 文件,测试服就会中断。

如何在我的测试服上获取配置以查看 html 电子邮件,或者更好地查看两封电子邮件?我目前必须将我的文本电子邮件移出地图,才能让功能测试达到 运行 并通过。

存储在 deliveries 中的电子邮件对象应具有 html 和文本部分,可分别通过 html_parttext_part 访问。所以要查看 html 的唯一部分,你会做类似

的事情
fragment = Nokogiri::HTML::fragment(last_email.html_part.body.to_s)

注意:由于您使用的是水豚,所以有一个 gem 可以使这种 testing/email link 更容易被称为 capybara-email