- 浏览: 2071074 次
- 性别:
- 来自: 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" 的问题怎么办
MiniTest是1.9后加到ruby标准库里的。其中,有几个部分当在1.9中写
比较显著的部分是MiniTest::Spec和MiniTest::Mock,夜猪对此比较感冒,当然效果是比不了Rspec啦,比如before do还是不能支持before :all do这样的回调。对于ruby标准库来说还是不错的开始。简介如下:
例如之前的unittest可能会这么写
之后,可以这样写
再来一个之前的setup和teardown
变成如下:
下一篇准备说说MiniTest的Mock
这里也支持skip方法就是cucumber里的@wip
值得注意的是,这个minitest/spec的支持只有短短300多行代码,有条件的推荐读。
然后写unit test一定想知道assertions都有啥吧
当然,也比原版的unit test的assertion好读了,对应关系参考
最后,想要rake跑test目录下所有测试,添加如下Rakefile文件
关于benchmark放最后
输出如下:
require 'test/unit'时,会兼容的把MiniTest:Unit载入,然而MiniTest::Unit只是增加了assertions
比较显著的部分是MiniTest::Spec和MiniTest::Mock,夜猪对此比较感冒,当然效果是比不了Rspec啦,比如before do还是不能支持before :all do这样的回调。对于ruby标准库来说还是不错的开始。简介如下:
例如之前的unittest可能会这么写
require 'test/unit' class TestArray < Test::Unit::TestCase def test_array_can_be_created_with_no_arguments assert_instance_of Array, Array.new end def test_array_of_specific_length_can_be_created assert_equal 10, Array.new(10).size end end
之后,可以这样写
require 'minitest/spec' require 'minitest/autorun' describe Array do it "can be created with no arguments" do Array.new.must_be_instance_of Array end it "can be created with a specific size" do Array.new(10).size.must_equal 10 end end
再来一个之前的setup和teardown
require 'minitest/autorun' class TestMeme < MiniTest::Unit::TestCase def setup @meme = Meme.new end def test_that_kitty_can_eat assert_equal "OHAI!", @meme.i_can_has_cheezburger? end def test_that_it_will_not_blend refute_match /^no/i, @meme.will_it_blend? end end
变成如下:
require 'minitest/autorun' describe Meme do before do @meme = Meme.new end describe "when asked about cheeseburgers" do it "must respond positively" do @meme.i_can_has_cheezburger?.must_equal "OHAI!" end end describe "when asked about blending possibilities" do it "won't say no" do @meme.will_it_blend?.wont_match /^no/i end end end #这里是我说的那个,还是不支持所有测试before :all
下一篇准备说说MiniTest的Mock
这里也支持skip方法就是cucumber里的@wip
值得注意的是,这个minitest/spec的支持只有短短300多行代码,有条件的推荐读。
然后写unit test一定想知道assertions都有啥吧
obj.must_be(operator, expected) # for example, 10.must_be :< , 11 obj.must_be_close_to # the equivalent of assert_in_delta obj.must_be_empty - Fails unless obj.empty? obj.must_be_instance_of(klass) # Fails unless obj.class == klass obj.must_be_kind_of(klass) # Fails unless obj is of class klass or klass is one of its superclasses. obj.must_be_nil obj.must_be_same_as $ tests for true object equality lambda {}.must_be_silent obj.must_be_within_delta obj.must_be_within_epsilon obj.must_equal(other) # Does a ==/eql? comparison between two objects. obj.must_include(other) obj.must_match(regex) # A regular expression match, e.g. "hello".must_match /w+/ lambda {}.must_output(stdout, [stderr..]) # The block should have certain output on stdout or stderr. Set stdout to nil just to check stderr. lambda {}.must_raise(exception) obj.must_respond_to(message) obj.must_throw(sym) wont_be wont_be_empty wont_be_instance_of wont_be_kind_of wont_be_nil wont_be_same_as wont_equal wont_include wont_match wont_respond_to
当然,也比原版的unit test的assertion好读了,对应关系参考
最后,想要rake跑test目录下所有测试,添加如下Rakefile文件
require 'rake/testtask' Rake::TestTask.new do |t| t.libs.push "lib" t.test_files = FileList['test/*_test.rb'] t.verbose = true end
关于benchmark放最后
## optionally run benchmarks, good for CI-only work! require 'minitest/benchmark' if ENV["BENCH"] class TestMeme < MiniTest::Unit::TestCase # Override self.bench_range or default range is [1, 10, 100, 1_000, 10_000] def bench_my_algorithm assert_performance_linear 0.9999 do |n| # n is a range value @obj.my_algorithm(n) end end end
#或者放到spec里 describe Meme do if ENV["BENCH"] then bench_performance_linear "my_algorithm", 0.9999 do |n| 100.times do @obj.my_algorithm(n) end end end end
输出如下:
TestBlah 100 1000 10000 bench_my_algorithm 0.006167 0.079279 0.786993 bench_other_algorithm 0.061679 0.792797 7.869932
发表评论
-
brew service restart
2013-07-06 22:56 1443brew services restart memcached ... -
git如何合并 多个commit
2013-07-02 20:42 9363需要先搞明白rebase 然后,进这个界面 pick b ... -
rvm create gemset
2013-07-01 09:00 1278rvm ruby-1.9.3-p429 do rvm gems ... -
关于devise结合github通过omniauth登录
2013-06-24 04:47 4152最近写了个github帐户登录Demo: https://gi ... -
cdata 和 xml xmlParseEntityRef: no name 错误
2013-05-04 00:24 4997Problem: An XML parser returns ... -
一目了然 rails html xml encode decode
2013-05-03 23:37 31101.9.2p320 :001 > require ' ... -
使用scope 链接多个where条件
2013-05-02 09:17 2604scope :by_category, (lamb ... -
在rspec里使用 route path
2013-05-01 20:09 1006Rspec.configure do |config| ... -
select_tag default value & options
2013-04-10 21:40 2185#If you are using select_tag ... -
Jquery array remove
2013-04-10 21:38 4531Array.prototype.remove = fu ... -
ruby readline的两种写法
2013-04-09 10:21 897f = File.read('public/file.cs ... -
关于encoding utf-8
2013-04-04 20:55 4081一 gem解决方案 https://github.com/m- ... -
我见过最清楚的解释class_eval 和 instance_eval
2013-04-02 07:06 3321忘了,看一次就能回忆起来 class A # def ... -
multiple provider oauth
2013-04-01 11:13 1292Allowing users to login with mu ... -
oauth github和multiple oauth
2013-04-01 11:08 1542http://railscasts.com/episodes/ ... -
Ruby Jquery 地图,地理信息相关资源
2013-03-22 20:32 932Railscast Geocorder Geocorde ... -
load migrate file and load
2013-03-22 05:52 995Dir[Rails.root.join('db','mig ... -
Brew update problem
2013-03-22 05:48 1338引用 MBA:~ fortin$ brew update er ... -
Jquery sort table number
2013-03-19 01:01 1136So here is what the column is s ... -
update_all
2013-03-13 02:09 1339Article.limit(2).update_all [&q ...
相关推荐
Ruby提供了两种强大的测试工具,RSpec和Minitest,它们通过匹配器功能可以帮助我们预防这种问题的发生。 RSpec是Ruby中广泛使用的BDD(行为驱动开发)框架,它允许开发者以自然语言的方式编写测试。匹配器是RSpec的...
rspec-collection_matchers, 集合基数匹配器,从rspec期望中提取 RSpec::CollectionMatchers RSpec::CollectionMatchers 让你在一个例子中表达一个对象集合的预期结果。expect(account.shopping_cart).to have_
《Programming Ruby 1.9 The Pragmatic Programmers' Guide》是学习Ruby编程语言的一本经典著作,尤其针对Ruby 1.9版本进行了详细的讲解。这本书由著名的Pragmatic Programmers出版,因其深入浅出的讲解和实用的编程...
TestUnit 由于其历史久远,包含了许多现在已经很少使用的第三方库,这导致其体积庞大,运行效率较低,且缺乏现代测试框架的一些特性,如 spec 风格测试和内置的 mock 支持。 MiniTest 在设计时考虑到了对 TestUnit ...
### Rango:Ruby 1.9 上的轻量级网络开发框架 Rango 是一个基于 Ruby 1.9 的轻量级 Web 开发框架,它为开发者提供了灵活且强大的工具来构建网站。与 Sinatra 相比,Rango 更加健壮;而与 Rails 或 Merb 相比,它的...
Ruby提供了一些强大的测试框架,如Test::Unit、MiniTest以及RSpec,它们帮助开发者编写可读性强、易于维护的测试用例。 Test::Unit是Ruby内置的测试框架,它基于JUnit,一个Java平台的测试框架。Test::Unit提供了...
Ruby提供了多种测试框架,如RSpec、Minitest和Test::Unit,它们帮助开发者确保代码的正确性和可靠性。 首先,RSpec是Ruby社区广泛使用的BDD(行为驱动开发)测试框架。它允许开发者以自然语言的方式编写测试,使得...
RSpec :: ActiveModel :: Mocks RSpec :: ActiveModel :: Mocks提供了用于测试ActiveModel类的工具。 mock_model(Person, name: "Fred")安装将此行添加到您的应用程序的gemfile中: gem 'rspec-activemodel-mocks'...
RSpec :: CollectionMatchers RSpec :: CollectionMatchers使您可以在示例中表达对象集合的预期结果。... spec_helper.rb添加到您的spec_helper.rb : require 'rspec/collection_matchers' 使用rspec-collection_matc
:Ruby + RSpec入门用git克隆这个 repo: git clone https://github.com/kata-seeds/ruby-rspec-seed.gitcd ruby-rspec-seed安装依赖项并使用make运行测试: make您最终应该会看到 1 次测试运行和 0 次失败。...
Ruby快速测试从运行您的TestUnit , RSpec和Cucumber ruby测试文件。 受到启发。正在安装使用Atom程序包管理器(可在“设置”视图中找到该程序)或从命令行运行apm install ruby-quick-test 。用法Ruby Quick Test可...
$ rspec -r rspec/ontap -f RSpec::TapY spec/*.rb 可以将其简化为: $ rspec -f RSpec::TapY spec/*.rb 之所以rspec/tap_y ,是因为如果最初未定义该类,则RSpec将自动需要相关路径-在这种情况下为rspec/tap_y ...
Ruby rspec-nagios-formatter Gem描述这个gem提供了一个简单的 ,它以 Nagios/Icigna输出格式报告rspec结果。安装要求安装过程需要 。 它可以安装运行: gem install rake通过Ruby gem install rspec-nagios-...
Ruby提供了多种测试工具,如MiniTest、RSpec和Cucumber等,它们各自有其特点和适用场景。 MiniTest是Ruby标准库的一部分,它包含了一个全面的测试套件,支持单元测试、集成测试以及性能测试。编写MiniTest的测试...
Minitest则是轻量级的测试框架,它包含在Ruby的标准库中,既有Test::Unit的风格,也有RSpec的特性。Minitest::Test提供了一套测试类,而Minitest::Spec则引入了类似于RSpec的DSL。 在"ruby-test-main"这个文件名中...
gem 'simplecov' , :require => false , :group => :testgroup :development , :test do gem 'spring' gem 'rspec-rails' gem 'capybara' gem 'shoulda-matchers' gem 'factory_girl_rails' gem 'selenium-...
此外,Test::Unit和RSpec是常用的测试框架,帮助确保代码质量。 9. **Ruby的性能优化**:虽然Ruby相对解释型语言来说性能略低,但通过优化代码结构、利用缓存、选择合适的数据结构等方法,可以显著提高运行效率。 ...
使用 RSpec 开发 Rails 应用程序 本教程适用于想要使用 RSpec 开发 rails 应用程序的用户。 参考这个 使用 导轨 4.0.4 Ruby 2.0.0 mysql2 0.3.18 文件 group :development , :test do gem 'rspec-rails' gem '...
将此添加到您的Gemfile中: gem 'rspec_api_helpers'然后执行: $ bundle或将其自己安装为: $ gem install rspec_api_helpers将其包含在您的spec_helper中 RSpec . configure do | config | # ... config . ...