`
sean
  • 浏览: 16314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

rails测试中的陷阱

阅读更多
  1. 在测试中访问cookie的值必须要用这种形式: cookies['key'].value.first, 例如cookies['auth_token'].value.first。这里应注意两点, 一是在测试中访问cookie必须要用String作为key, 不能用Symbol(在controller中既可以用String,也可以用Symbol);二是要取得值必须调用value方法,但返回的是数组类型, 所以还要调用first方法。
  2. 有时我们在测试中想证明某个cookie值为nil, 我们可能这样写
    ruby 代码
    1. assert_nil cookies['auth_token'].value.first  
    如果你在被测代码中调用了cookies.delete 'auth_token' 时,上面的assert代码不会有问题, 但如果没有,上面的assert代码会抛出error, 因为这时cookies['auth_token']的值为nil。所以我们可以这样写上面的assert代码:
    ruby 代码
    1. assert_nil cookies['auth_token'] && cookies['auth_token'].value.first  
  3. 下面是一段partial代码_password_field_row.rb(摘自RailsSpace):
    ruby 代码
     
    1. <div class="form_row" > 
    2.   
    3.   <%= form.password_field field, :size => User::PASSWORD_SIZE, :maxlength => User::PASSWORD_MAX_LENGTH %>  
    4. &lt;/div&gt;  
在测试register.rhtml时会抛出error,大致意思是说在partial中变量field_title没有定义。这是因为在测试环境中如果在调用partial时不显示的标明field_title变量, 会认为field_title没有定义(在非测试环境中却没有这个问题)。可以用defined?方法解决这个问题 
ruby 代码
 
  1. <% field_title = nil if not defined?(field_title) -%>  
  2.   
  3.   
  4.   <%= form.password_field field, :size => User::PASSWORD_SIZE, :maxlength => User::PASSWORD_MAX_LENGTH %>  
  
分享到:
评论

相关推荐

    rails 3 upgrade handbook(simple樣例)

    3. **测试准备**:建立全面的测试覆盖,确保升级过程中不会引入新的错误。 4. **逐步升级**:按照官方文档的建议,分阶段进行升级操作。 5. **性能调优**:完成升级后,对应用程序进行性能评估和优化。 #### 四、...

    Addison.Wesley.Rails.AntiPatterns.Best.Practice.Ruby.on.Rails.Refactoring

    《Rails反模式:最佳实践与Ruby on Rails重构》是一本由Chad Pytel和Tammer Saleh撰写的书籍,深入探讨了在Ruby on Rails开发过程中常见的反模式,并提供了相应的最佳实践和重构策略。本书旨在帮助开发者识别并避免...

    The Rails Way

    - **MVC架构**:深入讲解Rails中的Model-View-Controller架构模式,解释每个组成部分的作用及它们之间的交互方式。 - **数据库操作**:包括Active Record的基础用法、高级查询技巧以及数据库迁移的管理方法等。 - **...

    ember-cli-rails:统一您的EmberCLI和Rails工作流程

    在一个过程中开发您的Rails API和Ember前端 将Rails生成的内容注入您的EmberCLI应用程序 通过从单个域提供EmberCLI应用程序和API来避免跨域资源共享陷阱 编写真正的端到端集成测试,通过启用JavaScript的Capybara...

    Recipes:Ruby on Rails 精选食谱书

    7. **Testing**:Rails鼓励TDD(测试驱动开发),提供了诸如RSpec、Cucumber、MiniTest等测试框架,确保代码的质量和稳定性。 8. **Gem**:Ruby的包管理系统Gem是Rails生态的重要组成部分,它允许开发者通过安装和...

    Trustworthy Online Controlled Experiments by Ron Kohavi Diane Ta

    总的来说,《值得信赖的在线控制实验》是一本实用性极强的指南,它不仅适用于初学者,也适合有经验的从业者,帮助他们在A/B测试中避免陷阱,提高实验的质量和效率,从而更好地推动创新和数据驱动的决策。

    migration_data:在ActiveRecord迁移中安全地迁移数据并保持最新

    有时,Rails迁移不仅会更改数据库架构,还会更改数据。 而且该代码更改数据可能已过时且失败。 有一些技术可以帮助避免这些陷阱。 例如,在迁移中定义模型类或编写原始SQL。 但是它们不能在所有情况下提供帮助,也...

    Eloquent_ruby

    - **测试与调试**:教授如何编写测试代码以及调试技巧。 - **最佳实践**:分享Ruby编程的最佳实践和常见陷阱避免方法。 #### 书籍特色 - **清晰的组织结构**:按照学习曲线精心安排章节顺序,使读者能够循序渐进地...

    ruby 帮助文档资料

    可能涉及的话题有Ruby的基础语法、常见的编程陷阱、如何利用Gem(Ruby的包管理器)安装和管理依赖,或者是关于Ruby on Rails的实战经验分享。 标签“源码”可能暗示着这篇博客会深入到Ruby的源码层面,讨论其内部...

    benoitdupont.github.io:我关于各种软件开发主题的博客

    8. **问题解决和调试技巧**:分享在开发过程中遇到的问题及其解决方案,帮助读者避免常见陷阱。 通过阅读这个博客,无论是初学者还是经验丰富的开发者,都能从中获取到宝贵的Ruby和Rails开发经验,学习到新的编程...

    Gorgon:采用集中管理的分布式Ruby测试

    Gorgon提供了一种方法来分配运行ruby测试套件的工作量。 它依靠amqp进行消息传递,并依靠rsync进行源代码同步。 安装Gorgon 本说明了如何在示例应用程序中安装gorgon。 将侦听器安装为守护进程(Ubuntu 9.10或更高...

    Ajax基础教程(扫描版)

     书中不仅详细讲述了如何结合使用各种标准web技术如javascript、html、css和xmlhttprequest开发ajax应用,而且涵盖了调试、测试、文档、验证等工具,以及相关的模式、框架、应该避免的陷阱。阅读本书,再加上已有的...

    一个基于Go的web框架.zip

    1. **简洁的语法**:Go语言的语法简洁明了,易于学习,同时也避免了一些其他语言中的常见陷阱。 2. **并发支持**:Go语言通过goroutines和channels提供了内置的并发支持,使得编写高并发程序变得简单。 3. **垃圾...

    Working with Ruby Threads

    - **避免全局变量**:全局变量是多线程编程中最常见的陷阱之一,应尽量避免使用,以免引发线程安全问题。 - **创建更多对象而非共享单一对象**:通过创建多个实例来替代共享一个对象,可以降低数据竞争的风险。 - **...

    gorkapit.github.io

    4. **测试驱动开发(TDD)**:Ruby社区强调TDD,可能会看到Rspec、MiniTest等测试框架的使用示例。 5. **代码优化**:如何编写高性能的Ruby代码,避免常见性能陷阱。 6. **Ruby最佳实践**:代码风格指南、命名约定、...

    the-well-grounded-rubyist:通过完善的Rubyist书来存储代码的存储库

    6. **测试驱动开发(TDD)**:TDD 是 Ruby 社区广泛采用的开发实践,书中的例子可能包括使用 RSpec 或 MiniTest 等测试框架进行 TDD。 7. **Web 开发**:Ruby 与 Rails 框架紧密关联,书中可能包含关于 Web 应用开发...

    一个程序员五年学习观.doc

    * 《C 和指针》、《C 缺陷和陷阱》、《C 专家编程》是初级 C 程序员必看的三本书,也是应届新员工必须好好学习的教材,非常适合刚毕业的大学生学习。 C++语言 * 《Effective C++:改善程序与设计的 55 个具体做法...

Global site tag (gtag.js) - Google Analytics