- 浏览: 273935 次
- 性别:
- 来自: 尤溪
文章分类
最新评论
-
palytoxin:
我现在也发现是这样
关于分享 -
float2net:
Java社区,分享有利于提高。
关于分享 -
hz_qiuyuanxin:
头晕啊,啊邱
RSpec学习笔记 -
reyesyang:
...
关于分享 -
Hooopo:
一般实现map都先实现each
在 Ruby 中对树状结构(tree)进行 map 操作
前面这部分参考自:http://www.letrails.cn/archives/20/ 作者:zhangyuanyi
安装很简单:
如果要在rails里边使用,最好再装一个rspec on rails:
RSpec代码用spec命令执行,比如:
specdoc参数格式化行为(describe方法创建的对象)以及样例(it方法创建的对象)的名字然后输出:
should方法:第一个参数叫做macher,比如
这里面的==, ===, equal, be_empty都是macher。macher有很多种,我没有仔细去研究,rspec的源代码位置:gems\rspec-1.2.8\lib\spec\matchers
gems\rspec-1.2.8\lib\spec\expectations\extensions中有个kernel.rb,扩展了ruby的kernel,上面提到的should方法就是在这定义的,另一个是它的反义词should_not。
各种macher的用法见:http://www.letrails.cn/archives/11-02-advanced-rspec-tutorials-basics/
其中那个be_close的注释不太对,只能说在那个例子中是对的,试一下 200.should be_close(80,21),看看输出结果就知道它的意思:
暂时先记到这,关于页面的测试,只找到这么一篇文章:
http://blackanger.blog.51cto.com/140924/64189
先看The Rails Way第18章去,似乎找到的所有资料中,也就The Rails Way的第18章讲得最详细了(该死的国内某出版社),回头再完善这篇笔记。
==========================================================
The Rails Way 18章笔记
这里好像有点问题,rails中,model的valid?方法并不一定要在save方法之后调用,而是任何时候都可以调用的。所以这里的should be_valid之前没有什么必要调用save方法。
如前面所说,RSpec直接往kernel里添加了should和should_not方法,而Ruby的Object class是mixin了Kernel模块的,所以这里说:RSpec mixes should and should_not into the base Ruby Object class at runtime
代码中有个叫be_valid的macher,这些macher并不是RSpec中预定义的方法,而是通过method_missing来实现的。这些以be_开头的macher一旦被调用,RSpec会根据macher的名字剩下的那部分去查找对象中对应的布尔型的方法。如:
还有一些硬编码了的macher用于判断布尔值和nil:
为了使代码读起来更自然,RSpec还提供了两个带不定冠词(a和an)的macher:be_a_和be_an_,用法和be_一样,只需要注意一下英文的语法(当然这不是必须的):
……不知不觉又把全文抄上了
安装很简单:
gem install rspec
如果要在rails里边使用,最好再装一个rspec on rails:
gem install rspec-rails
RSpec代码用spec命令执行,比如:
spec user_spec.rb
specdoc参数格式化行为(describe方法创建的对象)以及样例(it方法创建的对象)的名字然后输出:
spec user_spec.rb --format specdoc
should方法:第一个参数叫做macher,比如
'foo'.should == 'foo' 'foo'.should === 'foo' 'foo'.should_not equal('foo') ''.should be_empty
这里面的==, ===, equal, be_empty都是macher。macher有很多种,我没有仔细去研究,rspec的源代码位置:gems\rspec-1.2.8\lib\spec\matchers
gems\rspec-1.2.8\lib\spec\expectations\extensions中有个kernel.rb,扩展了ruby的kernel,上面提到的should方法就是在这定义的,另一个是它的反义词should_not。
各种macher的用法见:http://www.letrails.cn/archives/11-02-advanced-rspec-tutorials-basics/
其中那个be_close的注释不太对,只能说在那个例子中是对的,试一下 200.should be_close(80,21),看看输出结果就知道它的意思:
引用
expected 80 +/- (< 21), got 200
暂时先记到这,关于页面的测试,只找到这么一篇文章:
http://blackanger.blog.51cto.com/140924/64189
先看The Rails Way第18章去,似乎找到的所有资料中,也就The Rails Way的第18章讲得最详细了(该死的国内某出版社),回头再完善这篇笔记。
==========================================================
The Rails Way 18章笔记
引用
Listing 18.1 is part of a real-world RSpec script defining the behavior of a CreditCard model class.
describe "A valid credit card" do before(:each) do @credit_card = generate_credit_card end it "should be valid after saving" do @credit_card.save @credit_card.should be_valid end end
引用
RSpec scripts are collections of behaviors, which in turn have collections of examples.Line 1 uses the describe method to create a Behavior object under the covers.The behavior sets the context for a set of specification examples, and you should pass it a sentence fragment that accurately describes the context you're about to specify.
The before method on line 2 (and its companion after) are akin to the setup and teardown methods of xUnit frameworks like Test::Unit. They are used to set up the state as it should be prior to running an example, and if necessary, to clean up the state after the example has run. This particular behavior did not require an after block.
The before method on line 2 (and its companion after) are akin to the setup and teardown methods of xUnit frameworks like Test::Unit. They are used to set up the state as it should be prior to running an example, and if necessary, to clean up the state after the example has run. This particular behavior did not require an after block.
引用
The it method on line 6 is used to create an Example object, and you also give it a description. The idea is to complete the thought that was started in the describe method, so that it forms a complete sentence. Our example reads "A valid credit card should be valid after saving." See it?
引用
Moving on, line 7 of Listing 18.1 invokes save on the credit card object, and since it's an ActiveRecord model, we know that will get it validated. So all we have left is to verify that the credit card instance is valid. Rather than xUnit-style assertions, RSpec introduces some funky DSL-ish syntax to do verification, based on a pair of methods called should and should_not.
这里好像有点问题,rails中,model的valid?方法并不一定要在save方法之后调用,而是任何时候都可以调用的。所以这里的should be_valid之前没有什么必要调用save方法。
引用
RSpec mixes should and should_not into the base Ruby Object class at runtime so that they are available on all objects. They expect to receive Matcher objects, which you generate using RSpec expectation syntax.
如前面所说,RSpec直接往kernel里添加了should和should_not方法,而Ruby的Object class是mixin了Kernel模块的,所以这里说:RSpec mixes should and should_not into the base Ruby Object class at runtime
代码中有个叫be_valid的macher,这些macher并不是RSpec中预定义的方法,而是通过method_missing来实现的。这些以be_开头的macher一旦被调用,RSpec会根据macher的名字剩下的那部分去查找对象中对应的布尔型的方法。如:
collection.should be_empty #passes if target.empty? target.should_not be_empty # passes unless target.empty? target.should_not be_under_age(13) # passes unless target.under_age?(13)
还有一些硬编码了的macher用于判断布尔值和nil:
target.should be_true target.should be_false target.should be_nil target.should_not be_nil
为了使代码读起来更自然,RSpec还提供了两个带不定冠词(a和an)的macher:be_a_和be_an_,用法和be_一样,只需要注意一下英文的语法(当然这不是必须的):
"a string".should be_an_instance_of(String) 3.should be_a_kind_of(Fixnum) 3.should be_a_kind_of(Numeric) 3.should be_an_instance_of(Fixnum) 3.should_not be_instance_of(Numeric) #fails
引用
RSpec will even understand have_ prefixes as referring to predicates like has_key?:
{:foo => “foo”}.should have_key(:foo) {:bar => “bar”}.should_not have_key(:foo)
引用
RSpec has a number of expectation matchers for working with classes that implement module Enumerable. You can specify whether an array should include a particular element, or if a string contains a substring.
You get a slick bit of syntactic sugar for testing the length of collections:
What if you want to specify the length of a has_many collection? "Schedule.days.should have(3).items" is admittedly quite ugly. RSpec gives us some more sweetness here as well.
[1, 2, 3].should include(1) [1, 2, 3].should_not include(4) "foobar".should include("bar") "foobar".should_not include("baz")
You get a slick bit of syntactic sugar for testing the length of collections:
[1, 2, 3].should have(3).items
What if you want to specify the length of a has_many collection? "Schedule.days.should have(3).items" is admittedly quite ugly. RSpec gives us some more sweetness here as well.
schedule.should have(3).days # passes if schedule.days.length == 3
……不知不觉又把全文抄上了
发表评论
-
在 Ruby 中对树状结构(tree)进行 map 操作
2012-07-30 21:37 2907class BookChapter < ActiveRe ... -
一小段代码理解Fiber
2012-03-24 17:55 1506server = Fiber.new do |request| ... -
靠……靠谱量又足啊
2011-05-15 15:23 2122起源:慎用类变量 - 实例变量靠谱量又足 大概如下 ... -
RSpec-Core 2.6
2011-05-14 21:55 3528主要是转载吧,文档在墙的另一边,翻过去嫌麻烦,更多详细内容: ... -
在view spec中用Capybara.string的结果替代rendered(Capybara版本0.4.12)
2011-05-10 10:12 1617问题关键字:undefined method `has_sel ... -
rails best practices
2011-05-03 00:44 0我还清楚的记得,在06年左右,我写第一个软件的时候,1个月内心 ... -
authlogic笔记
2010-04-17 21:46 6210参考: http://github.com/binarylog ... -
JRuby on Rails连接MySQL遇到的一个问题。
2010-01-22 05:07 1815按照官方的wiki安装好JRuby、Rails以及需要的ada ... -
Hpricot笔记
2009-12-28 03:34 2658Hpricot::Doc的search方法返回一个Hprico ... -
任务来了
2009-12-27 20:53 0要求像 www.tieku.org 一样,抓取天涯的热门文章, ... -
alias,alias_method和alias_method_chain
2009-12-16 23:45 4541晚上被问到这三个的区别,没答上来,查了一下书本跟google。 ... -
webrat,草草记一下。
2009-12-14 15:55 0visit:发送一个get请求,相当于在浏览器的地址栏中输入u ... -
ffffffff
2009-11-12 21:14 0各司其职,cucumber用于描述最表层的“行为”,rspec ... -
What's the difference between private and protected methods?
2009-08-27 23:30 1208引用 In Ruby, private visibility ... -
ubuntu下安装Ruby、Rails全记录
2009-08-10 19:27 2098还是记下来吧,之前花了很大力气安装成功过,前几天重装系统,Ru ... -
RSpec学习笔记
2009-03-30 17:46 0before(:all) 在所有example之前执行,并只执 ...
相关推荐
在本篇ROR(Ruby on Rails)学习笔记中,我们将深入探讨如何在Windows XP操作系统上进行环境的安装和配置。Ruby on Rails是一个流行的开源Web应用框架,它基于Ruby编程语言,以其“DRY”(Don't Repeat Yourself)...
安装$ gem install rspec-webservice_matchers你得到什么这些新的RSpec匹配器: 笔记be_up 寻找200,但最多可追踪4次重新导向be_fast 检查Google 分数是否大于WEBSERVICE_MATCHER_INSIGHTS_KEY 85。 WEBSERVICE_...
具有RSpec,Capybara和Cucumber的测试驱动Rails 我在TDD Rails上的Pluralsight 课程中的笔记。 常用命令命令描述bin/rails s 启动Rails服务器bin/rails c 启动Rails控制台bundle exec rake routes 列出所有路线bin/...
12. **测试驱动开发(Test-Driven Development, TDD)**:Ruby社区非常重视TDD,常用的测试工具有Minitest和RSpec,学习如何编写单元测试和集成测试是提高代码质量的关键。 通过深入学习以上知识点,并通过实践不断...
在描述中提到的“NULL”可能意味着该资源没有提供详细的介绍,但通过博文链接(https://hlee.iteye.com/blog/351357),我们可以推测这是一个关于学习和实践Rails 3的博客文章,可能包含了作者的学习笔记、示例代码...
描述提到的“全部代码和文档”意味着这个资源包含了学习者在学习期间创建的所有程序代码以及相关的学习笔记、文档或者日志,这为其他学习者提供了参考和学习的宝贵材料。 【标签】"Ruby"明确了这个项目的核心技术...
压缩包中的文件"ror.txt"可能是作者记录的详细安装过程或者学习笔记,可能包含了遇到的问题、解决方法以及个人心得。 在学习Rails的过程中,理解其核心概念,如MVC架构、路由规则、ActiveRecord模型、 erb模板引擎...
在这个资料库中,我们可以期待找到一系列与Ruby相关的代码练习、项目示例以及可能的学习笔记,这些都是学员在学习过程中积累的实践经验。 Ruby是一种面向对象的、简洁且可读性强的编程语言,特别适合初学者入门。在...
【标题】"ajit-notebook:阿吉特的笔记本"所指的可能是一个个人项目或者学习资源库,其中包含了阿吉特(Ajit)在IT领域,尤其是Ruby编程语言方面的笔记、代码示例或者学习资料。这个“笔记本”可能是为了分享知识、...
笔记GitHub Classroom将为您专门创建一个存储库以处理此作业。 确保您正在该存储库中工作。 它将被命名为ca1-ruby-{your-github-username} 。 还要确保随时随地提交解决方案,并将提交推送到GitHub上的远程存储库...
"表明你正在进行的项目或学习笔记还没有达到预期的完整状态,这很正常,因为学习和开发往往需要时间来完善。 标签"Ruby"则强调了这个项目的核心语言是Ruby,它是Rails的基础。Ruby语言以其简洁、清晰的语法和对...
"杜岑伦米米"可能是创建者或项目负责人,暗示这可能是一个个人或团队的学习笔记。"HAMVERİ"阶段可能指的是项目的开发或学习进度,暗示这些材料正在进行不断的更新和改进。 Ruby on Rails(RoR)是一个基于Ruby语言...
RSpec是另一个常用的第三方测试工具,它提供了更友好的语法和更强大的断言。 RoR的Gem生态系统非常丰富,如Devise用于用户认证,CanCanCan处理授权,Paperclip或CarrierWave用于文件上传,DelayedJob或Sidekiq实现...
综合以上内容,这个压缩包中的演讲集为开发者提供了丰富的学习资源,涵盖了从后端开发到前端实现,再到代码管理和演讲技巧的全方位知识。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。
RPS挑战指示挑战时间:直到一天结束随时使用Google,您的笔记,书籍等,但请自行进行操作当您开始挑战时,请提出拉取请求,并在全天进行提交时继续推送更新请提交图表,说明您在战斗挑战或本挑战中浏览器如何与...
2. **教程或笔记**:可能是作者整理的学习资料,涵盖了Ruby的基础知识和高级特性,帮助你系统地学习。 3. **测试文件**:通常以`.rb`后缀结尾,用于运行代码并验证其正确性。Ruby的测试驱动开发(TDD)文化非常流行...
5. **测试驱动开发**(TDD):Ruby社区非常重视测试,所以笔记可能会涉及Rspec或Minitest等测试框架,以及如何进行TDD。 6. **异常处理和错误调试**:讲解如何在Ruby中捕获和处理异常,以及有效的调试技巧。 7. **...
描述中的 "自用,不提供下载" 表明这个资源是作者个人使用的,可能包含了一些特定的配置或笔记,不适合公开分享或作为通用教程。尽管如此,我们可以从 "railstutorial4th-1.0.0.pdf" 这个文件名中推测,这可能是 ...
本笔记摘录自WDI HKV以及lynda.com的在线Rails教程,旨在提供一个全面且深入的学习指南。 ### 1. **基础概念** - **MVC架构**:Rails采用Model-View-Controller(MVC)设计模式,将业务逻辑(Model)、用户界面...