草庐IT

ruby-on-rails - 测试与 rspec-rails 3.0.1 和 shoulda 的关联不起作用

目前,使用rspec-rails(2.14.2),我测试我在模型规范中与shoulda(3.5.0)gem的关联,如下所示:#app/models/user.rbclassUser经过一些研究,我在尝试使与关联相关的断言起作用时遇到了困难(它们似乎都失败了)。错误信息:1)UserFailure/Error:it{is_expected.tobelong_to:school}NoMethodError:undefinedmethod`belong_to'for##./spec/models/user.rb:4:in`block(2levels)in'所以我的问题是:你能在没有shoul

ruby - 使用 RSpec 3 测试 sidekiq perform_in

RSpec3和sidekiq3.2.1。我已经正确设置了sidekiq和rspec-sidekiq。假设我有一个名为WeatherJob的worker,它将天气状态从sunny更改为rainy:classWeatherJobincludeSidekiq::Workerdefperformrecord_idweather=Weather.findrecord_idweather.updatestatus:'rainy'endend我这样使用这个worker:WeatherJob.perform_in15.minutes,weather.id。在规范中,我使用Timecop来模拟时间:re

ruby - 你如何测试使用 rspec fork 的代码

我有以下代码defstart_sunspot_serverunless@serverpid=forkdoSTDERR.reopen("/dev/null")STDOUT.reopen("/dev/null")server.runendat_exit{Process.kill("TERM",pid)}wait_until_solr_startsendend我将如何有效地使用rspec对其进行测试?我想到了什么Kernel.should_receive(:fork)STDERR.should_receive(:reopen).with("/dev/null")STDOUT.should_r

ruby - 我可以使用 capybara/rspec 来匹配范围吗?

我正在测试Rails3.2.6应用。是否有可能做出一个Rspec/Capybara断言来表达,例如:“如果我要求查找1970年至1990年之间的电影,该页面应包含这些日期之间的电影:”例如it"shouldshowfilmsinthethechosendaterange"dopage.shouldhave_selector'.year',#thensomethingliketext:range(1970..1990)end相反,我可以检查没有“.year”元素包含不在该范围内的日期吗?感谢您的帮助。 最佳答案 将block传递给ha

ruby-on-rails - 需要循环遍历rspec中的一个数组,测试不运行

我有一个测试需要遍历数组中的5个元素,然后验证所有元素是否都显示为页面上的列表项。我有下面的代码,它是带有注释“#getthefirst5blogposts”的最后一个测试。当我运行测试时,没有看到这个测试,因为只执行了4个测试。如果我将“it{}”语句移到数组代码博客之外,测试就会变得可见。我如何正确编写此测试以使其能够正确循环?require'spec_helper'require'requests/shared'describe"Header"dolet(:title){"mytitle"}subject{page}before{visitroot_path}describe"H

ruby - 如何检查对从 rspec 中的构造函数调用的方法的调用?

如果我有一个构造函数调用另一个函数的类,我如何检查它是否被调用以及调用次数正确?classMyClassdefinitialize(count)count.times{self.do_something}enddefdo_something#whateverendend我想说点什么n=4MyClass.new(n).should_receive(:do_something).exactly(n).timesn=2MyClass.new(n).should_receive(:do_something).exactly(n).times但这失败了,因为对do_something的调用发生在

ruby-on-rails - RSpec redirect_to 和 return 与 redirect_to && return

我有一个Controller,可以在特定条件下在特定点重定向。当我将参数传递给我的Controller规范(使用最新的RSpec)中的规范辅助方法以触发这些条件时,我得到一个ActionView::MissingTemplate错误。在仔细检查我应该重定向时,我做了如下一行:redirect_toroot_path&&return然后在我的测试套件中抛出一个异常。我在应该调用的Controller的索引函数中放置了一个断点(我重定向到的路由指向)并且它从未在我的测试套件中调用过。当我在我的开发环境和生产环境中运行这段代码时,它似乎可以工作,但对于这个测试,它不会让步。有什么想法吗?我的

ruby-on-rails - 创建记录似乎没有持久化到测试数据库,rspec,factory_girl_rails

根据factory_girl_rails文档:这里是factory_girlbuild()和create()方法之间的区别:#ReturnsaUserinstancethat'snotsaveduser=build(:user)#ReturnsasavedUserinstanceuser=create(:user)我知道工厂的强大之处在于它们可以使您的测试套件更快,因为它允许您运行测试而无需通过build()方法接触数据库。另一方面,create()方法仍然会接触数据库,因为它将记录保存到数据库中。我很困惑,因为当我在使用create()后在我的测试中放置一个断点时Rails控制台显示

ruby-on-rails - ruby on rails教程第3.2节rspec测试报错

最近启动了MichaelHartl的RoRTute,在第3.2节中尝试我的第一个rspec测试时卡住了,此时测试注定要失败,但我得到的只是错误,我很难解释。我环顾四周,但没有找到类似的错误和/或解决方案。我是编程和ruby​​/rails的新手。任何帮助将不胜感激,谢谢!终端错误输出Macintosh:sample_apprails$bundleexecrspecspec/requests/static_pages_spec.rb/Users/rails/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-we

ruby - RSpec - 无法 stub 类私有(private)方法

我正在尝试使用RSpec3消除对某些JSON发出外部请求的方法。我之前通过将其放入spec_helper.rb文件中来让它工作,但现在我重构了并将该方法移动到它自己的类中,stub不再有效。RSpec.configuredo|config|config.beforedoallow(Module::Klass).toreceive(:request_url)doJSON.parse(File.read(File.expand_path('spec/fixtures/example_data.json')))endendend类看起来像这样moduleModuleclassKlass#pu