草庐IT

rspec-mocks

全部标签

ruby-on-rails - RSpec - 处理救援 block 内的重试

我目前遇到了一个循环,其中retry在我的测试中被执行。我怎样才能stubretry并仍然测试它上面的代码?我有一段代码可以捕获HostKeyMismatch异常:rescueNet::SSH::HostKeyMismatch=>ee.remember_host!retryend我的规范:describe"rescuesNet::SSH::HostKeyMismatch"doit"resyncsthesshkeys"doNet::SSH::HostKeyMismatch.any_instance.should_receive(:remember_host!).and_return(tr

ruby - RSpec 认为 block 没有收到 "call"消息?

我想使用RSpec来确保我的可枚举类与Ruby的访问者模式兼容:#foo.rbclassFoodefinitialize(enum)@enum=enumendincludeEnumerabledefeach(&block)@enum.each(&block)endend这是我的rspec文件:#spec/foo_spec.rbrequire'rspec'require'./foo.rb'describeFoodolet(:items){[1,2,3]}describe'#each'doit'callsthegivenblockeachtime'doblock=proc{|x|x}blo

ruby-on-rails - 使用 RSpec 测试 rake 任务后清除数据库

我正在尝试使用rspec测试我的rake任务,它运行良好,但问题是之后没有删除记录。我已将config.use_transactional_fixtures=true放入配置文件中,没有任何影响。在其他测试中,它运行良好。这是我的代码:require'rspec'require'spec_helper'require'rake'describe'my_appraketasks'dodescribe'rake_task_1'dobefore{MyApp::Application.load_tasks}it'shouldtestit!'do10.times{create(:record)}

ruby - 无法使用 rspec 和 Grape 设置自定义 header 参数

我使用Grapeapi,我需要编写一个带有自定义header的测试我的代码:it"shouldacceptmessage"dopost"/api/v1/my/route",post_data,secret:"ASDFGHJKL"last_response.status.should==201end但是路由根本没有header,我也试过headers['secret']="ASDFGHJKL"还有request.env['secret']什么都没用。我如何将rspec中的header传递给grape路由? 最佳答案 您是否尝试过hea

ruby - 为什么 RSpec 运行示例的顺序不是它们声明的顺序?

我正在使用RSpec2.99并具有以下简单规范文件:describe'thing'docontext'context'doit'onething'do#...endit'anotherthing'do#...endendit'withoutcontext'do#...endend输出是:$bundleexecrspectest_spec.rb-fdthingwithoutcontextcontextonethinganotherthingFinishedin0.00092seconds3examples,0failures我不明白为什么withoutcontextbeforeconte

ruby-on-rails - RSpec 3 : Simple validates_uniqueness_of Failure

我正在尝试在无法通过的模型上测试唯一性验证。我对另一个通过的模型进行了相同的验证测试,但我不明白我在这方面遗漏了什么。我已经在论坛上搜索并尝试了一些东西,但仍然没有通过。我敢肯定这里有一些小而重要的东西要学!这是我的代码..factories.rbFactoryGirl.definedofactory:quotedosequence(:content){|x|"Dustisdirtywordnumber#{x}!"}reference"http://en.wikipedia.org/wiki/Albert_Einstein"author_id1endendquote_spec.rbre

ruby - 在 rspec 中 stub require 语句?

我必须维护一个Ruby脚本,它需要一些我在本地没有的库,这些库在我的环境中不起作用。不过,我想在此脚本中指定一些方法,以便我可以轻松更改它们。是否有一个选项可以在我要测试的脚本中存入一些require语句,以便它可以由rspec加载并且规范可以在我的环境中执行?示例(old_script.rb):require"incompatible_lib"classScriptdefsome_other_stuff...enddefadd(a,b)a+bendend如何在不拆分“old_Script.rb”文件且不提供我没有的incompatible_lib的情况下编写测试来检查add函数?

ruby - 如何使用 rspec 为不同的调用产生不同的值

我正在尝试以与and_return相同的方式使用and_yield。我希望它每次调用时都产生一个值...但是每次调用时它都会产生两次。这个人为的例子说明了问题classYielder@@blocks=[]defself.yielder;enddefself.blocks=b;@@blocksrspec结果...expected:[:foo,:bar]got:[:foo,:bar,:foo,:bar]我是不是用错了? 最佳答案 如建议的那样,and_yield的工作方式与and_return不同。但如果您想要这种行为,您可以执行以下操

ruby-on-rails - 在 RSpec 和 Capybara 功能规范中伪造实例变量

在我开始重构我公司的一些旧代码之前,我正在尝试设置一些功能规范。这是一种非常规的设置,但我能够充分了解测试替身以绕过身份验证以开始使用。我仍然遇到的一个问题是,在我绕过的这些方法中设置的一些实例变量是View所期望的,所以我得到了undefinedmethodfornil:NilClass错误。在对程序代码进行任何更改之前,我希望运行规范。在这种情况下,我可以轻松地将特定实例变量移动到另一个方法。但我相信还会有更多这样的情况出现。这是我目前正在处理的示例:defsecurity_level@right_now=Time.now##othercodethatwontworkwithout

arrays - 如何使用 Rspec 检查某物是否为数组?

我尝试了以下并得到了相关的错误:Failure/Error:reminders_array.shouldbe_an(Array)NoMethodError:undefinedmethod`should'for#reminders_array应该是一个数组,我想用Rspec测试来检查它。我应该如何不同于上面测试的断言? 最佳答案 should是旧语法,你应该这样做:expect(reminders_array).tobe_an(Array)或:expect(reminders_array).tobe_an_instance_of(Ar