`
andyhu1007
  • 浏览: 199457 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Rails每周闲碎(八): Test

阅读更多

1. Cucumber

 

    Cucumber is a tool that can execute plain-text documents as automated functional tests. Here is an example:

 

 

Feature: Search courses
  In order to ensure better utilization of courses
  Potential students should be able to search for courses

  Scenario: Search by topic
    Given there are 240 courses which do not have the topic "biology"
    And there are 3 courses A,B,C that each have "biology" as one of the topics
    When I search for "biology"
    Then I should see the following courses:
      | title |
      | A     |
      | B     |
      | C     |
 

   用Cucumber来写客户验收测试的目的是明显的,就是让客户或者业务分析师能看懂甚至由他们来编写客户验收测试。

 

    但在实际应用中,Cucumber真的能做到它想做的么?我个人是持怀疑态度的。理由有几点:

 

    a. Cucumber测试用例的编写没有那么简单和自由。Cucumber的本质是在文本和程序语言之间建立一种映射。这种映射限制了cucumber测试用 例的编写必须遵循某种规则,并且每个语句都需要有相应的程序语言实现。那么就是说,如果要让客户或者业务分析师脱离开发或者测试人员,独立并且无障碍地编 写测试用例,我觉得大多数人没有这个能力。既然如此,它已经脱离了它本身的初衷。

 

    b. 用method chain本身就可以实现基本类似的测试用例,为什么要多此一举呢?在项目中,我们用了cucumber,实践证明cucumber用例的编写和维护是相当麻烦的。

 

    c. 大多数业务人员或者客户根本不会看它一眼。实践表明,大多数业务人员或者客户根本不会看它一眼。他们更相信手工测试的结果,即使是测试人员也是如此。

 

    所以,不推荐用这个东西。

 

 

 

2. RSpec

 

    RSpec is the original Behaviour Driven Development framework for Ruby.

 

    Spec::Rails : A Rails plugin that brings RSpec to Rails.

 

 

3. spec_helper

 

  # use transactional for each test.
  config.use_transactional_fixtures = true
  # not only insert yaml data to database, but also created all objects. But we always disable it 
  # because of performance issue.
  config.use_instantiated_fixtures  = false
  # default fixtures path
  config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
 

4. rspec describe

   rspec测试中的describe XXXController有什么作用?看了源代码后,用这种方式会使这个spec成文被测试类的子类。那么它其中的public方法你都可以尽情调用。

 

 

5. integrate_views

 

    对于rspec controller测试,在必要的地方加上integrate_views,否则页面上的错误将被忽视。

 

    比如,你想验证在某种条件下,页面上会出现某些text,可以用这种方法:

 

    response.should include_text("")

 

 

 

6. rspec pending test

 

 

describe "test some thing" do
 
   it "do some something"     # it's a pending test with no implementation

end

 

 

2
0
分享到:
评论

相关推荐

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...

    Rails 4 Test Prescriptions

    ### Rails 4 Test Prescriptions — 构建健康代码库 #### 一、书籍概述与价值 《Rails 4 Test Prescriptions》是一本专注于教授开发者如何为Rails应用编写测试的书籍,作者Noel Rappin凭借多年的经验提炼出了一...

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

    Ruby on Rails入门经典代码

    Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...

    rails-ansible-presentation:有关Rails + Ansible的Deckset演示

    [适合] Rails :red_heart: Ansible [适合] Rails :red_heart: Ansible (有一点帮助) Rails部署 简单吧? 将应用程序放在服务器上。 捆绑宝石。 应用迁移。 重新启动服务。 Easy Rails部署 git push master ...

    rails-basic-template:基本 Rails 模板

    Rails 基本模板参考: : Ruby on Rails Gemfile:定义应用程序正在使用的库的文件bundle install:基于Gemfile,安装所有库每次修改 Gemfile 时都应该运行bundle install gem 是 Ruby 的库RubyGems.org 是一个查找和...

    rails_console_toolkit:可配置的 Rails 控制台助手

    RailsConsole 工具包 :wrench: :toolbox: 可配置的 Rails 控制台助手更快地查找记录,添加自定义助手,将您的控制台寿命提高 100%。安装将此行添加到应用程序的 Gemfile 中: gem 'rails_console_toolkit' 然后生成...

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成.zip

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。 有关详细信息,请参阅 #90. web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中...

    rails_email_preview:在Rails中预览和编辑应用程序邮件模板

    Rails电子邮件预览 使用此Rails引擎在浏览器中预览电子邮件。 与Rails 4.2+兼容。 一封电子邮件评论: 所有电子邮件预览的列表: REP带有两个主题:一个简单的独立主题和一个使用的主题。安装加 到Gemfile: gem '...

    rails-dom-testing:从ActionView中提取DomAssertions和SelectorAssertions

    Rails :: Dom :: Testing 这个gem负责比较HTML DOM并断言Rails应用程序中存在DOM元素。 assert_dom_equal通过assert_dom_equal和assert_dom_not_equal进行比较。 元素通过assert_dom , assert_dom_encoded , ...

    rails 5 test prescriptions build a healthy codebase

    Test the component parts of a Rails application, including the back-end model logic and the front-end display logic. With Rails examples, use testing to enable your code to respond better to future ...

    Rails 4 Test Prescriptions.pdf

    Rails 4 Test Prescriptions 强调了测试对于构建稳定、可扩展的 Rails 应用的重要性,并提供了实用的指导来帮助开发者编写有效的测试。 #### 选择合适的测试策略 本书深入探讨了如何根据项目的需求选择最佳的测试...

    rails-react-test:使用react-rails和docker测试Rails应用程序

    Rails Docker示例该应用程序的Docker设置... 要仅重新启动应用服务器,请运行以下命令: docker-compose restart restarone_app 一次性运行测试套件: docker-compose run --rm restarone_test rails test:full_suite

    rails-controller-testing:将`assigns`和`assert_template`带回到您的Rails测试中

    Rails :: Controller :: Testing 这个gem将assigns给控制器测试的内容以及assert_template带回assigns控制器和集成测试的内容。 这些方法已中。 安装 将此行添加到您的应用程序的Gemfile中: gem 'rails-...

    rails_stack-cookbook:使用 nginx、unicorn、redis 等设置 Rails 环境的 Chef 食谱

    rails_stack 食谱 TODO:在此处输入食谱说明。 例如,这本食谱使您最喜欢的早餐三明治。 要求 TODO:列出您的食谱要求。 确保包含本说明书对平台、库、其他说明书、软件包、操作系统等的任何要求。 例如 包裹 ...

    rails-cache-extended:帮助程序和日志记录添加到 Rails 缓存

    Rails::Cache::Extended 这允许为记录集合生成自动过期的缓存键 安装 将此行添加到应用程序的 Gemfile 中: gem 'rails-cache-extended' 然后执行: $ bundle 或者自己安装: $ gem install rails-cache-...

    vite_rails:Rails中的:high_voltage:Vite.js,为您JavaScript体验带来欢乐

    允许您使用为Rails应用程序的前端供电。 是将前端工具像Ruby一样进行编程,纯属喜悦! :smiling_face_with_heart-eyes: 或在运行的检查。 产品特点 :high_voltage: :light_bulb: 即时服务器启动 :high_voltage: ...

    atom-rails-db-scheme:Rails数据库模式的Autocomplete +提供程序

    Rails数据库方案 Rails数据库模式的Autocomplete +提供程序。 特征 自动完成活动记录 根据当前上下文打开模式文件 设定值 将Rails语法设置为默认语法。 " * " : core : customFileTypes : " source.ruby.rails...

    rails-html-sanitizer

    如果您在非Rails应用程序中需要类似的功能,请考虑直接使用(这是处理内幕消毒的原因)。 安装 将此行添加到您的应用程序的Gemfile中: gem 'rails-html-sanitizer' 然后执行: $ bundle 或将其自己安装为: $...

    react_rails_flux_screencast:react-rails + Flux(Alt.js)教程

    带有Flux(Alt)的React Rails截屏博客文章: : YouTube视频: : 这是截屏视频的代码,显示了如何将和集成到您的rails应用程序中。 我只使用不带npm的链轮,因此设置非常简单。 Alt( )React Rails( )Lodash( ...

Global site tag (gtag.js) - Google Analytics