目前,使用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
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
我有以下代码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
我正在测试Rails3.2.6应用。是否有可能做出一个Rspec/Capybara断言来表达,例如:“如果我要求查找1970年至1990年之间的电影,该页面应包含这些日期之间的电影:”例如it"shouldshowfilmsinthethechosendaterange"dopage.shouldhave_selector'.year',#thensomethingliketext:range(1970..1990)end相反,我可以检查没有“.year”元素包含不在该范围内的日期吗?感谢您的帮助。 最佳答案 将block传递给ha
我有一个测试需要遍历数组中的5个元素,然后验证所有元素是否都显示为页面上的列表项。我有下面的代码,它是带有注释“#getthefirst5blogposts”的最后一个测试。当我运行测试时,没有看到这个测试,因为只执行了4个测试。如果我将“it{}”语句移到数组代码博客之外,测试就会变得可见。我如何正确编写此测试以使其能够正确循环?require'spec_helper'require'requests/shared'describe"Header"dolet(:title){"mytitle"}subject{page}before{visitroot_path}describe"H
如果我有一个构造函数调用另一个函数的类,我如何检查它是否被调用以及调用次数正确?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的调用发生在
我有一个Controller,可以在特定条件下在特定点重定向。当我将参数传递给我的Controller规范(使用最新的RSpec)中的规范辅助方法以触发这些条件时,我得到一个ActionView::MissingTemplate错误。在仔细检查我应该重定向时,我做了如下一行:redirect_toroot_path&&return然后在我的测试套件中抛出一个异常。我在应该调用的Controller的索引函数中放置了一个断点(我重定向到的路由指向)并且它从未在我的测试套件中调用过。当我在我的开发环境和生产环境中运行这段代码时,它似乎可以工作,但对于这个测试,它不会让步。有什么想法吗?我的
根据factory_girl_rails文档:这里是factory_girlbuild()和create()方法之间的区别:#ReturnsaUserinstancethat'snotsaveduser=build(:user)#ReturnsasavedUserinstanceuser=create(:user)我知道工厂的强大之处在于它们可以使您的测试套件更快,因为它允许您运行测试而无需通过build()方法接触数据库。另一方面,create()方法仍然会接触数据库,因为它将记录保存到数据库中。我很困惑,因为当我在使用create()后在我的测试中放置一个断点时Rails控制台显示
最近启动了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
我正在尝试使用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