我正在编写一个RubyGem,如果提供给其单一方法的参数无效,它可以引发ArgumentError。我如何使用RSpec为此编写测试?下面的例子展示了我想到的那种实现方式。bar方法需要一个bool参数(:baz),检查其类型以确保它实际上是一个bool值:moduleFoodefself.bar(options={})baz=options.fetch(:baz,true)validate_arguments(baz)endprivatedefself.validate_arguments(baz)raise(ArgumentError,":bazmustbeaboolean")un
我是Ruby的新手,我一直在尝试学习Rake、RSpec和Cucumber。我找到了一些可以帮助我测试Rake任务的代码,但我无法让它正常工作。有人告诉我:http://blog.codahale.com/2007/12/20/rake-vs-rspec-fight/放弃这个:defdescribe_rake_task(task_name,filename,&block)require"rake"describe"Raketask#{task_name}"doattr_reader:taskbefore(:all)do@rake=Rake::Application.newRake.ap
我正在经历相当痛苦的RSpec3.1升级。我有几个在RSpec2.99中工作的功能规范,它们提高了:undefinedmethod`feature'formain:Object我注意到我必须在我的其他规范中使用RSpec.describe,因为它们不再附加到主要对象。等效的功能调用是什么?在我的功能中我需要'rails_helper'require'rails_helper'feature'FacebookAuthentiation'do...endspec/rails_helper.rb#Thisfileiscopiedtospec/whenyourun'railsgenerater
在RSpec中,如果我有警告并且有x.should==42another_line_of_code然后我得到一个关于的警告warning:uselessuseof==invoidcontext还有什么我可以做的吗关闭警告将其更改为bitbucket=(x.should==42) 最佳答案 使用:x.shouldeq(42)或者:x.shouldbe==42或者移动x.should==42使其成为itblock中的最后一行。对于那些思考但是为什么?的人我完全是Ruby的菜鸟,但这是我的理解:警告来自Ruby,因为像x.should==
假设x应该大于y。我如何在rspec中对其进行编码? 最佳答案 使用rspec2.14和期望语法,可以这样表达:expect(x).tobe>y 关于ruby-rspec中的整数比较匹配器,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13592697/
我有点难过。我有以下集成测试:require"spec_helper"describe"/foods",:type=>:apidoincludeRack::Test::Methodslet(:current_user){create_user!}let(:host){"http://www.example.com"}beforedologin(current_user)@food=FactoryGirl.create_list(:food,10,:user=>current_user)endcontext"viewingallfoodsownedbyuser"doit"asJSON"d
我曾经使用过Heckle,但由于ParseTree的问题,它与ruby1.9不兼容。我一直在寻找替代方案,但唯一看起来有前途的是Chaser,它没有任何明确的文档可供我使用,看看我是否可以让它与RSpec一起工作。它似乎具有Test::Unit依赖性。那么-是否有人使用任何很棒的工具来真正检查您的测试质量?或者-是否有提供比c0覆盖更好的覆盖工具?这将有助于解决同样的问题。我现在正在使用cover_me,但它是c0,就像rcov。 最佳答案 你看过Mutantgem吗??它适用于Rspec。Thereisanicetutoria
我正在努力让Rails3应用程序准备好使用时区。我的开发机器在美国东部时间,我托管的服务器在UTC。在我的rspec测试中有没有一种方法可以更改ruby使用的系统时区,这样我就可以使用相同的系统时区运行测试,而不必更改我计算机上的系统时钟?我研究过Delorean和Timecop,它们不是我要找的。我正在寻找类似的东西Time.system_time_zone="UTC"...然后Time.now将返回UTC时间,而不是我的系统时区设置的时间。 最佳答案 before{Time.stub(:now){Time.now.utc}}
我正在尝试stub某个类的任何实例。我需要stubfetch方法,它用一些数据填充self。如何访问self变量,修改它并返回fetch方法?MyObject.any_instance.stub(:fetch){self}不返回MyObject实例。也许,模拟在这种情况下更有用。不幸的是,我还没有理解它们。 最佳答案 有一个openrspec-mocksissue解决这个问题。我希望在某个时候解决这个问题,但是以一种不破坏现有规范套件的方式添加它并不简单,这些规范套件使用any_instanceblock实现,因为我们会开始屈服一个
我正在通过RubyonRails教程(MichaelHartl)学习RoR。现在我尝试使用Guard运行测试。我的gem文件:source'https://rubygems.org'ruby'2.0.0'#ruby-gemset=railstutorial_rails_4_0gem'rails','4.0.2'group:development,:testdogem'sqlite3','1.3.8'gem'rspec-rails','2.13.1'gem'guard-rspec','2.5.0'endgroup:testdogem'selenium-webdriver','2.35.1