`
xiao_hui
  • 浏览: 4454 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

rails对各类邮件的测试

阅读更多
前几天用assert_select_email来测试邮件内容:

 assert_select_email do
   items = assert_select "ol>li"
   items.each do
      # Work with items here...
   end
 end


程序在第一行中断,里面的断言并没有被执行,于是查看源码并调试:

      def assert_select_email(&block)
        deliveries = ActionMailer::Base.deliveries
        assert !deliveries.empty?, "No e-mail in delivery list"

        for delivery in deliveries
          for part in delivery.parts
            if part["Content-Type"].to_s =~ /^text\/html\W/
              root = HTML::Document.new(part.body).root
              assert_select root, ":root", &block
            end
          end
        end

      end

发现parts为空,原来这个断言只适用于multipart邮件,对于其它类型的邮件就束手无策了。上网查一下,给出这种方案,重写此方法:

      def assert_select_email(&block)
        deliveries = ActionMailer::Base.deliveries
        assert !deliveries.empty?, "No e-mail in delivery list"

        for delivery in deliveries
          for part in delivery.parts.empty? ? [delivery] : delivery.parts.select{|p| p["Content-Type"].to_s =~ /^text\/html\W/}

              root = HTML::Document.new(part.body).root
              assert_select root, ":root", &block
          end
        end

      end


当然,邮件内要有根节点,不然又会报错。

如果只想测试text/plain类型的邮件,可以在setup方法中加入:

    ActionMailer::Base.deliveries.clear #不清空的话,你得到的永远是第一个测试的邮件
    @emails = ActionMailer::Base.deliveries

测试内容:

    assert_equal 1, @emails.size
    email = @emails.first
    assert_equal 'abc@example.com', email.to[0] #测收件人地址
    assert_match /your new password is/, email.body #测邮件内容


就写这么多了,欢迎补充挑错
分享到:
评论

相关推荐

    roadie-rails, 使HTML电子邮件适合 Rails rockstars.zip

    roadie-rails, 使HTML电子邮件适合 Rails rockstars roadie 使HTML电子邮件适合 Rails rockstars 。这里 gem 将 Rails 应用程序与Roadie钩子,以帮助你生成HTML电子邮件。安装将这个 gem 添加到你的Gemfile,

    深入解析Rails测试策略:单元测试与功能测试的区别

    在软件开发中,测试是确保...通过本文的探讨,我们了解到了Rails中单元测试和功能测试的区别,以及如何利用Rails的测试工具来编写高质量的测试代码。掌握这些知识,将有助于开发者在Rails项目中实施有效的测试策略。

    使用RSpec 测试Rails 程序.pdf

    - **测试邮件发送**:确保应用中的邮件发送功能能够正常工作。 - **测试文件上传**:对于涉及文件上传的功能,需要编写专门的测试来验证其行为。 - **测试时间**:由于应用可能依赖于时间计算,因此需要测试与时间...

    maily, 在浏览器中,Rails 引擎预览电子邮件.zip

    maily, 在浏览器中,Rails ...测试和浏览应用程序所有电子邮件模板的Rails 引擎,可以直接在浏览器中预览它们。Maily会自动接收你所有的电子邮件,并让它们从一种仪表。插件功能:可以挂载引擎浏览器中的可视化预览

    RSepc rails 测试框架介绍

    RSpec 提供了一种清晰且简洁的方式来编写可读性强的测试代码,使得测试用例更像是对软件行为的规范描述,而不是简单的断言。 在 Rails 中,安装 RSpec 很简单,只需在 Gemfile 中添加 `gem 'rspec-rails'`,然后...

    rails-perftest, 测试和配置你的Rails 应用程序.zip

    rails-perftest, 测试和配置你的Rails 应用程序 性能测试 Rails 应用程序本指南介绍了 Ruby on Rails 应用程序性能测试的各种方法。阅读本指南后,你将知道:各种类型的基准测试和分析度量。如何生成性能和基准测试...

    combustion, 简单,优雅的Rails 引擎测试.zip

    combustion, 简单,优雅的Rails 引擎测试 燃烧in是一个以简单有效的方式测试 Rails 引擎的库,而不是在规范或者测试文件夹中创建完整的Rails 应用。它允许你在引擎的上下文中编写你的规格,只使用你需要的Rails 应用...

    Ruby-APITaster一种快速而简单的方法来可视化测试你的Rails应用API

    Ruby-APITaster是一款强大的工具,专为Rails应用的API测试和可视化设计。它使得开发者能够迅速地对API接口进行互动式测试,从而确保API的功能正确性和性能稳定性。这款工具的出现,极大地简化了API测试过程,提高了...

    Rails项目源代码

    Rails鼓励TDD(测试驱动开发),包括单元测试、集成测试和功能测试。RSpec、Capybara等库可以帮助编写和运行这些测试,确保代码质量。 这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手...

    Ruby on Rails:Rails中的测试驱动开发.docx

    Ruby on Rails:Rails中的测试驱动开发.docx

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    Ruby on Rails Guides_ A Guide to Testing Rails Applications.pdf

    它假设读者对Rails的基本操作方式有初步了解,但并不教如何编写一个Rails应用,而是聚焦于如何测试它。 三、单元测试你的模型 在准备应用进行测试时,该指南提供了详尽的步骤指导,包括如何运行测试,以及在单元...

    rails2-sample

    同时,也会介绍如何对应用进行基准测试,评估其性能表现。 #### 12. Deployment and Production Use(部署和生产使用) 最后,本书将指导读者如何将Rails应用部署到生产环境中,包括服务器的选择、配置、监控和...

    Rails 4 Test Prescriptions.pdf

    ### Rails 4 测试处方:构建健康的代码库 #### 关键知识点概述 1. **测试在 Rails 应用中的重要性** 2. **选择合适的测试策略** 3. **理解模拟(Mocking)与存根(Stubbing)的区别** 4. **构建高效测试套件的最佳实践...

    RailsSpace

    ”展望了RailsSpace项目的发展方向,提出了可能的改进方案和扩展功能,鼓励读者根据自己的需求对项目进行定制化开发。此外,还会介绍如何继续学习和提高Rails开发技能的方法。 ### 总结 通过构建一个真实的社交...

    Rails 4 Test Prescriptions

    《Rails 4 Test Prescriptions》是一本专注于教授开发者如何为Rails应用编写测试的书籍,作者Noel Rappin凭借多年的经验提炼出了一系列实用且有效的测试策略。本书受到了来自RSpec的主要维护者Myron Marston、...

    rails指南 中文版

    7. **Testing**:Rails强调测试驱动开发,内置了RSpec、Minitest等测试框架,支持单元测试、集成测试和功能测试,确保代码质量。 8. **Asset Pipeline**:Rails的资产管道处理JavaScript、CSS和图像等静态资源,...

    rails本地安装包完整版

    3. **actionmailer-2.1.0.gem**:ActionMailer使得在Rails应用中发送和接收电子邮件变得简单。它提供了一个抽象层,可以方便地创建、发送和接收邮件,同时处理SMTP服务器的配置和其他邮件相关的设置。 4. **...

    rails4.0.0

    Rails 4改进了测试框架,包括更好的测试覆盖率工具和更快的测试运行速度。同时,`active_support/benchmarkable`模块帮助开发者在代码中添加基准测试,以评估性能。 以上就是Rails 4.0.0的主要知识点,这些改进和...

    Rails

    标签 "工具" 可能意味着讨论到了与Rails开发相关的工具,如集成开发环境(IDEs)、包管理器(如Bundler)、测试框架(如RSpec和Capybara)、调试工具等,这些工具能提升开发效率和代码质量。 压缩包子文件的文件...

Global site tag (gtag.js) - Google Analytics