草庐IT

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

ruby-on-rails - Rspec Controller 测试没有命中我的 Controller 操作

我向Controller添加了一个import方法,当我从我的网站手动测试它时它工作正常,但它在rspec中失败了。这是我的测试结果:require'spec_helper'describePropertiesControllerdolet!(:user){FactoryGirl.create(:user)}before:eachdosign_inuserenddescribe"shoulduploaduserproperties"dobeforedopost:import,spreadsheet:fixture_file_upload("/files/property_upload_

ruby-on-rails - Rspec测试加载错误: cannot load such file -- spec_helper (LoadError)

我正在阅读有关RSpec测试的章节,但我一直收到加载错误。它告诉我首先创建一个新分支,然后创建两个新目录:Models和Spec。在这些目录中,我应该制作两个文件;models/entry.rb和spec/entry_spec.rb。在spec/entry_spec.rb中,我应该输入以下代码:require_relative'../models/entry'RSpec.describeEntrydoend然后在我的models/entry.rb中,我应该放这段代码:classEntryend然后我应该运行这个终端命令:$rspecspec/entry_spec.rb得到这个结果:No

ruby - 如何对使用 RSpec 的 REST API 的方法进行单元测试?

我正在从事一个从外部RESTAPI(来自Facebook、Twitter或Instagram等社交网络)获取数据的项目。我不确定我所做的是对还是错,所以我需要一些指导。我不知道,当人们创建依赖于外部数据(RESTAPI或爬行数据)的应用程序时,他们如何使用它进行TDD。我的问题是:我正在尝试对调用外部RESTAPI的方法进行TDD测试。这是对还是错?如果正确,我如何使用RSpec对其进行测试?有没有我可以阅读的指南或资源?如果错了,我该如何检查呢?如果我将API_VERSION更改为更高版本,我怎么知道逻辑是否仍然运行良好,并且所有必填字段仍然存在?例如:我有这样的代码:API_VER

ruby - 使用 Raise 尝试在 Ruby 中回答 Rspec 到 raise_error 时不断出现错误?

基本上,我正在尝试回答一系列Rspec指令。其中一条说明是这样的:it"failsinformativelywhenthere'snotenoughvaluesstackedaway"doexpect{calculator.plus}.toraise_error("calculatorisempty")end所以我了解了raise_error以及如何回答它,是我创建了某种错误/异常。defplus@array_nums.length>=2?@array_nums要清楚底部有一个结束,但文本编辑器没有处理它。所以我提出了错误,我试图提出ArgumentError等等,但我一直从rspec