- 浏览: 2075731 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
本文将从下面几个方面,来阐述使用Rspec的好处
* 对于代码块的测试
* 强大的测试helpers支持
* 简洁友好的输出
* 固定格式的测试结果输出
希望,你看完这些详尽解释的RSpec测试的好处能够,从传统的单元测试,开始接受Rspec方式的测试.而且,你会注意到选择RSpec测试,实际也并不比test/unit困难.
一. 对于代码块的测试
这是一种内置的测试支持,结构如下所示:
如果,你是在一个独立运行的Rails工程上,那么点击这里,获得插件支持.另外,Rspec也同时支持Before do和after do的语法支持,用于在操作之前和之后执行.就像传统test/unit支持的setup和teardown(不太清楚setup和teardown和test/unit的关系的话请参考Rails UnitTest 测试机制浅析),而且,你可以很容易把这些转变成块测试,如下例所示:
既然,最初,我们要通过我们的定义覆盖方法,现在,这些将被自带执行.
二.强大的测试helpers支持
测试helper如下:
如你所见,唯一需要做的就是继承ActionView::TestCase.下面是对于rake task的写法:
这样执行如下的rake命令就可以对helper进行测试:
三.简洁友好的specdoc方式测试输出
实际上,后面的两个Rspec的优势,我将在这一段中说明.假如你有两个个gems包colored和redgreen已经安装,那么使用Rspec你可以通过rake task测试并得到一个很好的输出.测试示例如下:
你只需要把这段测试代码,放到一个叫做"tests.rake"的文件,并在你的lib/tasks/目录下.你就可以通过在root目录下运行如下rake目录,进行测试,并得到良好的输出.这个rake tasks也会把测试记录输出到doc目录下的一个TESTDOC文件下.输出为你测工程进行的所有测试得到列表.
* 对于代码块的测试
* 强大的测试helpers支持
* 简洁友好的输出
* 固定格式的测试结果输出
希望,你看完这些详尽解释的RSpec测试的好处能够,从传统的单元测试,开始接受Rspec方式的测试.而且,你会注意到选择RSpec测试,实际也并不比test/unit困难.
一. 对于代码块的测试
这是一种内置的测试支持,结构如下所示:
test "should have some behavior" do # test some behavior end
如果,你是在一个独立运行的Rails工程上,那么点击这里,获得插件支持.另外,Rspec也同时支持Before do和after do的语法支持,用于在操作之前和之后执行.就像传统test/unit支持的setup和teardown(不太清楚setup和teardown和test/unit的关系的话请参考Rails UnitTest 测试机制浅析),而且,你可以很容易把这些转变成块测试,如下例所示:
class Test::Unit::TestCase def self.setup(&block) define_method(:setup, &block) end def self.teardown(&block) define_method(:teardown, &block) end end
既然,最初,我们要通过我们的定义覆盖方法,现在,这些将被自带执行.
二.强大的测试helpers支持
测试helper如下:
# test/test_helper.rb require 'action_view/test_case' # test/helpers/application_helper_test.rb class ApplicationHelperTest < ActionView::TestCase test "should set page title with a block" do result = page_title do '<em>Heading</em>' end assert_equal '<h1><em>Heading</em></h1>', result end end
如你所见,唯一需要做的就是继承ActionView::TestCase.下面是对于rake task的写法:
namespace :test do Rake::TestTask.new(:helpers) do |t| t.libs << "test" t.pattern = 'test/helpers/**/*_test.rb' t.verbose = true end Rake::Task['test:helpers'].comment = 'Run the helper tests in test/helpers' end
这样执行如下的rake命令就可以对helper进行测试:
$ rake test:helpers
三.简洁友好的specdoc方式测试输出
实际上,后面的两个Rspec的优势,我将在这一段中说明.假如你有两个个gems包colored和redgreen已经安装,那么使用Rspec你可以通过rake task测试并得到一个很好的输出.测试示例如下:
require 'colored' def banner(title, pad = 85) puts "\n#{title} ".ljust(pad, "*").yellow end def stripe puts ("-" * 84 + "\n").yellow end namespace :test do Rake::TestTask.new(:helpers) do |t| t.libs << "test" t.pattern = 'test/helpers/**/*_test.rb' t.verbose = true end Rake::Task['test:helpers'].comment = 'Run the helper tests in test/helpers' end namespace :tests do desc "Documents all tests in doc/TESTDOC" task :doc do File.open(Rails.root + '/doc/TESTDOC', 'w') do |file| Dir.glob('test/**/*_test.rb').each do |test| test =~ /.*\/([^\/].*)_test.rb$/ file.puts "#{$1.gsub('_', ' ').capitalize}:" if $1 File.read(test).map { |line| /test "(.*)" do$/.match line }.compact.each do |t| file.puts " - #{t[1]}" end file.puts end end end desc "Execute all application tests, plus TESTDOC" task :run do # document a list of all executed tests # (used to match up with requirements) Rake::Task['tests:doc'].invoke # unit tests banner "EXECUTING UNIT TESTS" Rake::Task['test:units'].invoke stripe # functional tests banner "EXECUTING FUNCTIONAL TESTS" Rake::Task['test:functionals'].invoke stripe # helper tests banner "EXECUTING HELPER TESTS" Rake::Task['test:helpers'].invoke stripe # integration tests banner "EXECUTING INTEGRATION TESTS" Rake::Task['test:integration'].invoke stripe # performance tests banner "EXECUTING APPLICATION BENCHMARKS" Rake::Task['test:benchmark'].invoke stripe end end
你只需要把这段测试代码,放到一个叫做"tests.rake"的文件,并在你的lib/tasks/目录下.你就可以通过在root目录下运行如下rake目录,进行测试,并得到良好的输出.这个rake tasks也会把测试记录输出到doc目录下的一个TESTDOC文件下.输出为你测工程进行的所有测试得到列表.
发表评论
-
eloquent ruby 读书笔记
2012-02-22 07:24 1464节省时间就草记,只记录新鲜,容易忘的 1. case 的判 ... -
Rails 3 in action 读书笔记
2012-02-11 23:54 1365那天看到IE有战友贴了这个书,就想找个时间读读,有收获随笔记下 ... -
The Rails3 Way, Second Edition
2011-04-25 10:23 1692顺便链接一个agile web development wi ... -
the rspec book 下载
2010-09-20 18:17 4337这是写rspec 和 cucumber 一直翻的书,当前最 ... -
电子书推荐 Textmate使用的书
2010-09-07 10:00 1568引用TextMate is a powerful too ... -
ruby电子书资源
2010-08-14 11:49 1757引用 Though we don't like to adm ... -
关于ruby 重构的电子书 资料两本
2010-08-09 20:10 1810Refactoring Ruby Edition 电子书 ... -
pro git 中文版下载
2010-07-06 10:17 11914感觉所有git的问题可以 ... -
peeping into memcached
2009-04-21 23:52 0http://blog.evanweaver.com/arti ... -
Agile Web Development with Rails 3rd 正式版
2009-04-08 13:33 3402Agile Web Development with Rail ... -
在Rails下连接SQL Server 2005 分页
2009-04-03 01:57 2406For a Rails/SQLServer applicati ... -
REST与Web services
2009-04-01 14:33 3098问题:你如何看待一个房间中两个或多个架构师?回答:是争论。既然 ... -
使用cucumber测试过程中de-bug
2009-04-01 01:51 1478最近,Rails工程中,做测试和集成测试的时候,Cucumbe ... -
关于Rails 2.3 十件你应该知道的事
2009-04-01 01:20 1843首先,这个是一篇粉饰Rails2.3的文章,挑选了十个方面展示 ... -
在Rails 2.3 中测试cookie
2009-03-31 18:48 2009Testing Cookies in Rails 2.3 近 ... -
5个使用Rails控制台的有用技巧
2009-03-31 18:36 4825update: 2011/10/26 1. 只想测试不想,真 ... -
The Ruby Programming Language 介绍
2009-03-29 11:35 1640点击这里下载chm part1 ... -
一些个人的在线资料
2009-03-28 11:56 1116MoutainWest Conference 视频的 ... -
从scope说起
2009-03-27 00:42 1257预计将从scope说起 以便理解Rails 2.3支持的d ... -
Ruby1.8和Ruby1.9的不同
2009-03-25 17:13 2286Someone recently emailed the r ...
相关推荐
解释单元测试的目的和好处 描述 TDD 及其重要性 解释什么是 RSpec 比较和对比expectations和matchers 比较和对比常见的 RSpec 术语,包括"describe" 、 "it" 、 "context" 、 before(:each) 、 before(:all) 、 ...
这有两个主要好处: 真的很快! 您的测试可以更改节点属性,操作系统和其他系统数据,以便在不同条件下声明行为。重要笔记ChefSpec需要Ruby 2.2或更高版本以及Chef 12.14.89或更高版本! 本文档对应于master分支,...
RSpec样式测试适用于多个节点/服务器实例,并支持使用puppet,chef,ansible进行配置。 Nodespec与Serverspec 是一个受欢迎的瑰宝,它使您可以编写rspec测试来验证服务器/主机的配置。 Nodespec不是Serverspec的...
其次,RSpec是Ruby社区广泛使用的测试框架,它提供了一种BDD(行为驱动开发)的风格来编写测试代码。RSpec允许开发者用自然语言描述代码的行为,使测试代码更易读且更具表达力。在"RSpec作业"中,你可能会遇到编写...
使用MutationRuby的好处在于,它可以揭示那些未被充分测试的代码区域,帮助开发者提高测试质量,确保代码的健壮性。这对于持续集成和持续交付(CI/CD)流程尤其重要,因为良好的测试覆盖率可以减少因代码改动导致的...
使用AutoTest.Net可以带来以下好处: - 提高测试覆盖率:通过自动化测试,确保所有关键代码路径都得到了验证。 - 快速反馈:实时运行测试,帮助开发者迅速定位和修复问题。 - 改进代码质量:鼓励TDD和BDD实践,促使...
使用更简洁的语法测试您的自定义资源安装将此行添加到应用程序的 Gemfile 中: gem 'chefspec-helpers' 然后执行: $ bundle或者自己安装: $ gem install chefspec-helpers用法为了演示这些助手的好处,我将提供...
用法 soundcheck=> runs all tests it can findsoundcheck spec=> runs rspec testssoundcheck --fast spec=> runs only rspec tests that don't require spec_helpersoundcheck spec/models/user_spec.rb=> runs ...
主要好处 独立于Web应用程序技术栈,语言和体系结构。 快速安装和配置完整的测试基础架构(不到5分钟)。 下方是优雅,直观且功能强大的Ruby语言。 可以选择您喜欢的BDD工具(Cucumber,RSpec或芜菁)。 与...
静物 这是什么? still_life是测试单元,小型测试,RSpec和Capybara的测试框架增强功能,记录了在端到端或单元测试执行期间呈现的所有HTML响应正文文本。... 但是确实,这个小库的真正好处是IMO的“ Rail
可测试性-通过轻松模拟测试数据和自然的RSpec匹配器来隔离地测试每个中间件。 有关与Ruby和Rails版本兼容的政策,请参见 。 安装 首先,只需将Coach添加到您的Gemfile ,然后运行bundle : gem 'coach' Coach可...
- TDD的好处:提高代码质量,减少缺陷,促进设计的改进,增强代码可读性和可维护性。 2. **Ruby与TDD** - Ruby语言特性:动态类型、元编程、简洁语法,使得编写测试和代码更加方便快捷。 - Ruby的测试框架:如...
- **RSpec**:一种流行的 BDD(行为驱动开发)框架,适用于 Rails 应用程序的测试。 - **Capybara**:一种 Web 测试工具,模拟用户的交互行为来测试应用程序。 - **Factory Bot**:用于生成测试数据,方便编写测试...
这样做的好处是可以避免在每个新项目中都重复设置相同的环境,如数据库配置、测试框架、前端库等。 在`initrailsix-master`压缩包中,可能包含以下关键组成部分: 1. **Gemfile**:这个文件列出了项目依赖的所有...
在实际开发中,使用这样的设计系统可以带来诸多好处: 1. **一致性**:通过预定义的样式和组件,可以保持整个应用的视觉风格统一,提高品牌识别度。 2. **可维护性**:由于组件化的结构,修改或扩展UI变得更为简单...
- **RSpec**:另一种常用的 BDD 工具,专为 Ruby 语言设计,提供了一种描述性的语法来编写测试案例。 #### 实施 BDD 的挑战与对策 虽然 BDD 带来了诸多好处,但在实际应用中也会遇到一些挑战,比如: - **团队...