Чтобы сделать вещи еще проще, вы можете использовать
message.text_part and
message.html_part
, чтобы найти соответствующие детали.Это работает даже для структурированных многочастных / альтернативных сообщений с вложениями.(Протестировано на Ruby 1.9.3 с Rails 3.0.14.)
Эти методы используют некоторую эвристику для поиска соответствующих частей сообщения, поэтому, если ваше сообщение состоит из нескольких текстовых частей (например, так как Apple Mail их создает)он может не выполнить «правильную вещь».
Это изменит вышеуказанный метод на
def body_should_match_regex(mail, regex)
if mail.multipart?
["text", "html"].each do |part|
mail.send("#{part}_part").body.raw_source.should match(regex)
end
else
mail.body.raw_source.should match(regex)
end
end
, который работает как с обычными (не многочастными) сообщениями, так и с многочастными сообщениями и проверяет всетела сообщения против определенного регулярного выражения.
Теперь, есть какие-нибудь добровольцы, чтобы сделать из этого "настоящего" соответствия RSpec?:) Что-то вроде
@mail.bodies_should_match /foobar/
было бы намного приятнее ...