草庐IT

ruby-on-rails - 如何阻止与 RSpec 和 Capybara 的外部连接?

对于我的Rails项目,我想编写非理想条件下的测试,例如缺少互联网连接或超时。例如,我正在使用gem联系API,如果我的应用程序和外部API之间存在连接问题,我想确保正确处理错误。我已经可以通过用VCR制作夹具并从“盒式磁带”中删除响应来做到这一点。但是,这有缺点:必须手动完成。如果我正在与一个团队(我就是)一起工作,那么磁带就不会被忽略。我怎样才能简单地在我的RSpec测试中创建一个阻止外部连接的block,模拟缺少互联网连接? 最佳答案 根据这篇思想机器人文章https://robots.thoughtbot.com/how-t

ruby-on-rails - Rspec:在模型无效时显示模型的错误

我通常在我的Rspec测试中写这样的东西:user.new(...)user.shouldbe_valid问题是,当该测试失败时,我看不到用户对象上的错误。有什么好的方法可以重写此测试,以便在Rspec输出中看到类似user.errors.inspect的内容?我试过user.errors.shouldbe_empty,但仍然只是说“预期为真,结果为假。” 最佳答案 您可以通过定义自定义匹配器来做到这一点。像这样的东西应该可以解决问题。RSpec::Matchers.define:be_validdomatchdo|actual|a

ruby-on-rails - rails - 找不到生成器 rspec :install.

我不知道它找不到生成器。geminstallrspecFetching:rspec-core-2.8.0.gem(100%)Fetching:rspec-expectations-2.8.0.gem(100%)Fetching:rspec-mocks-2.8.0.gem(100%)Fetching:rspec-2.8.0.gem(100%)Successfullyinstalledrspec-core-2.8.0Successfullyinstalledrspec-expectations-2.8.0Successfullyinstalledrspec-mocks-2.8.0Succe

ruby - rspec - 如何与预期中的实际 DateTime 进行比较?

我的rspec:it"canshowthecurrentmonthname"doexpect(Calendar.create_date_using_month(1)).toeq'2000-01-0100:00:00-0500'end失败:expected:"2000-01-0100:00:00-0500"got:2000-01-0100:00:00-0500对于我的代码:defself.create_date_using_month(n)Time.new(2000,n,1)end我应该/可以更改RSpec以便与实际字符串而不是日期进行比较吗?我试过:Date.strptime("{20

ruby-on-rails - 如何修复 2.99 版的 RSpec 语法?

我最近将我的Rails4应用程序从RSpec2.X升级到2.99,尽管运行了Transpec已经,我的一些测试仍然失败。require'spec_helper'describeInvoice,:type=>:modeldobefore:eachdo@user=FactoryGirl.create(:user)@invoice=FactoryGirl.create(:invoice,:user=>@user)endit"isnotopen"doexpect{FactoryGirl.create(:payment,:invoice=>@invoice,:amount=>100)}.toch

ruby-on-rails - 使用 Bullet 和 RSpec gem 减少 n+1 查询

将BulletGem与RSpec一起使用的有效方法是什么?现在我觉得如果我将它与我当前的单元测试框架一起使用,我会收到很多通知或测试失败,因为测试本身中的n+1个查询与我的生产应用程序中发生的事情无关,例如检查值或关联。因此,修复n+1故障不需要在我的Controller或模型上设置任何东西,而是需要在我的测试设置中设置一些东西以不抛出该特定错误,而且我没有看到我的应用程序有真正的性能改进。 最佳答案 最有效的方法是根本不用。在测试中减少n+1查询可能有一些合法的优势,最明显的是加快整体执行时间。然而,您很可能是testingtoo

ruby-on-rails - 使用 rspec 测试 Rails Controller

我是Rails的新手,我正在尝试使用rspec测试Controller。我的第一个测试是在调用show操作时,它应该通过url查找类别。问题是当我添加stub代码时,出现以下错误:#的未定义方法“查找”我的测试是这样的:require'spec_helper'describeCategoriesControllerdodescribe"GET/category-name/"dobefore(:each)do@category=mock_model(Category)Category.stub!(:find).with(:first,:conditions=>["url=:url",{:

ruby-on-rails - 如何从 RSpec 获取当前测试文件名?

我正在尝试加快大型RSpec项目的测试。除了使用RSpec的--profile选项外,我还想打印出运行时间最长的测试文件[1]。在我的spec_helper.rb中,我将正在测试的类和总时间转储到一个文件中,但是因为我们有spec/model和spec/request目录我真的很希望能够打印当前测试的文件名而不仅仅是类名(described_class),这样用户就可以在model/foo_spec.rb和request/foo_spec.rb优化时。在spec/spec_helper.rb的beforeblock中,如何获取当前测试文件的文件名?我的(经过大量修剪的)spec_hel

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