草庐IT

ruby - 在 RSpec 中调用相同的 rake 任务两次

我正在尝试使用rspec测试rake任务,为此我需要调用它两次,但是它只被调用一次。it'firsttest'doRake::Task['my_rake_task'].invoke#raketaskwasprocessedendit'secondtest'doRake::Task['my_rake_task'].invoke#raketaskwasNOTprocessedend 最佳答案 如果rake任务已经被调用过,除非你调用它,否则它不会再次运行:@rake[@task_name].reenable或调用它@rake[@task

ruby - RSpec 2.7 和散列应该有_key

我试图弄清楚为什么我写的一个非常简单的“这个散列有这个key”规范失败了。进入我的RubyREPL我正在尝试以下...[3]pry(main)>a_hash={:a=>"A"}=>{:a=>"A"}[4]pry(main)>a_hash.shouldhave_key:aNoMethodError:undefinedmethod`have_key'formain:Objectfrom(pry):4:in`'[5]pry(main)>a_hash.keys.length.should==1=>true[8]pry(main)>a_hash.has_key?:a=>true第一个测试显然是我

ruby-on-rails - 在 RSpec 2 中动态生成共享示例?

我试图通过创建一个共享示例组来保持我的规范干燥,该示例组对所有管理Controller(我项目的Admin命名空间下的所有Controller)执行样板检查。我正在努力弄清楚如何去做,因为共享示例需要提供有关要使用的操作和参数的信息。如果测试失败,理想情况下它应该显示有意义的错误(即包括它正在测试的操作的详细信息)。require'spec_helper'shared_examples"anadmincontroller"dobefore(:each)do@non_admin=User.make@admin=User.make(:admin)endcontext"asanadminus

ruby-on-rails - 测试 'create' Controller 操作的正确方法是什么?

我正在使用RubyonRails3.2.2、Rspec2.9.0和RspecRails2.9.0。我想测试createController操作,但我不知道如何使其成为“正确”/“正确”的方式。我“搭建”了模型、Controller、View……文件,因此在这些文件中我拥有由RubyonRails生成器生成的通用代码;在我的规范文件中,我有:it"assigns@article"donew_article=FactoryGirl.build(:article)Article.should_receive(:new).and_return(new_article)post:createas

ruby-on-rails - 如何在 Capybara finder 中使用正则表达式?

以下效果很好:find"img[src='https://www.example.com/image']"但是我也想找find"img[src='https://www.example.com/image?foo=bar']"如何在查找器的属性中使用正则表达式? 最佳答案 您可以使用^=检查属性是否以特定值开头:find("img[src^='https://www.example.com/image']")文章,TheSkinnyonCSSAttributeSelectors,描述了各种检查(等于、开始于、结束于等):#Equal

ruby-on-rails - 如何使用 FactoryGirl 发送参数(而不是手动将参数作为散列发送)?

我有以下有效的rspec测试:it"redirectstothecreatedapi_key"dopost:create,:api_key=>{:api_identifier=>"asdfadsf",:verification_code=>"12345"}response.shouldredirect_to(ApiKey.last)#(oranyothertestfunction)end但我使用Factorygirl,所以我不必手动创建api_key。如何复制上述功能,但使用factorygirl?使用:it"redirectstothecreatedapi_key"dotest=Fa

ruby-on-rails - 使用 rspec 测试具有子域约束的​​路由

我在使用子域约束进行rspec路由测试时遇到问题。特别是我有一条路线constraints:subdomain=>"api"doresources:sign_ups,:only=>[:create]end和(除其他外)测试it"doesallowcreationofsignups"do{:post=>"/sign_ups"}.shouldroute_to(:controller=>"sign_ups",:action=>"create",)end如果我删除子域约束,则此测试通过,但它会失败。我必须告诉rspec使用子域,但我不知道如何使用TIA安迪 最佳答案

ruby - 类型错误 : can't define singleton (RSpec)

这可能看起来像一个新手问题,但我很难过。我正在尝试构建一个简单的Rubyslack服务,并且正在使用RSpec将一些单元测试放在一起。我遇到了这个奇怪的问题,我看不出发生了什么。RSpec.describeSlackServicedolet(:token){'BOT-TOKEN'}subjectdoSlackService.new(token)enddescribe'#channel_list'docontext'getchannels'dolet(:client){instance_double(Slack::Web::Client)}before(:each)doallow(:su

ruby - Rspec any_instance.stub 为 nil :NilClass exception 引发未定义的方法 `any_instance_recorder_for'

这是我正在测试的包含在Foo.rb中的类:classFoodefbarreturn2endend这是Foo_spec.rb中包含的我的测试:require"./Foo.rb"describe"Foo"dobefore(:all)doputs"#{Foo==nil}"Foo.any_instance.stub(:bar).and_return(1)endit"shouldpassthis"dof=Foo.newf.bar.shouldeq1endend我得到以下输出:falseFFailures:1)FooShouldpassthisFailure/Error:Foo.any_insta

ruby - 使用 RVM 和 ruby​​ 1.8.6 在 Lion 上安装 rspec-1.3.2 时出现问题

我正在尝试使用RVM和Ruby1.8.6在OSXLion上安装rspec版本1.3.2当我安装时,我得到以下信息:$geminstallrspec-v=1.3.2Aborttrap:6我能够使用系统ruby​​成功安装相同的rspec版本。我试图对这个问题进行一些研究,但看起来没有人遇到过同样的事情。类似的问题建议在安装ruby之前exportCC=gcc-4.2。我试过了(在完全清除RVM并重新安装最新版本1.6.31之后)但它没有效果。有没有其他人遇到过这个?您找到解决方案了吗? 最佳答案 我安装了1.8.6fresh没有gem