草庐IT

ruby - bundle gem : rspec says 'No examples found'

我正在将ruby​​onrails项目的一部分移植到gem中。我已经使用bundlegem创建了新的gem目录。对于lib和spec目录,gem的项目布局如下所示:|-lib||-mylib|||-MYCLASS.rb|||-version.rb||||-mylib.rb||-spec|-spec_helper.rb|-mylib|-test_MYCLASS.rbspec/spec_helper.rb的内容:require"mylib"RSpec.configuredo|config|endmylib.gemspec的相关部分,由bundlegem命令生成:spec.files=`gi

ruby-on-rails - RSpec.describe 与描述

这是我一段时间以来第一次开始一个新的Rails项目。在构建模型时,Rspec创建以“RSpec”为谓词的描述blockRSpec.describeMyModeldo...end与旧风格对比:describeMyModeldo...end我已经仔细阅读了变更日志,但一定是遗漏了变更的理由? 最佳答案 从RSpec3开始,您可以通过限制domainspecificlanguage(dsl)来禁用describe的全局可用性。.以RSpec.describe为前缀确保测试在实现限制后仍将运行。注意:您仍然不需要前缀,除非您使用config

ruby - 如何使用 webmock 正则表达式匹配器?

如何匹配像这样的URL:http://www.example.com/foo/:id/barhttp://www.example.com/foo/1/barhttp://www.example.com/foo/999/barstub_request(:post,"www.example.com") 最佳答案 您可以使用%r{}而不是//作为Ruby中的正则表达式,以避免必须转义URL中的正斜杠。例如:stub_request(:post,%r{\Ahttp://www.example.com/foo/\d+/bar\z})

ruby-on-rails - 一个 has_many :through Relationship 的 Rails RSpec 测试

我是测试和Rails的新手,但我正努力让我的TDD流程正常运行。我想知道您是否使用任何类型的范例来测试has_many:through关系?(或者我想一般来说只是has_many)。例如,我发现在我的模型规范中,我肯定会编写简单的测试来检查关系两端的相关方法。即:require'spec_helper'describePostdobefore(:each)do@attr={:subject=>"f00PostSubject",:content=>"8arPostBodyContent"}enddescribe"validations"do...enddescribe"categoriz

ruby-on-rails - 使用 Rspec + Capybara 在 Rails 中测试错误页面

在Rails3.2.9中,我有如下定义的自定义错误页面:#application.rbconfig.exceptions_app=self.routes#routes.rbmatch'/404'=>'errors#not_found'效果如预期。当我在development.rb中设置config.consider_all_requests_local=false时,我在访问/foo时得到了not_foundView/p>但是我该如何使用Rspec+Capybara来测试呢?我已经试过了:#/spec/features/not_found_spec.rbrequire'spec_hel

ruby-on-rails - RSpec 测试使用 GET 参数重定向到 URL

假设我有一个带有redirect_to_baz方法的FoosController。classFoosController我正在使用spec/controllers/foos_controller_spec.rb对此进行测试:require'spec_helper'describeFoosController,:type=>:controllerdodescribe"GETredirect_to_baz"doit"redirectstoexample.comwithparams"doget:redirect_to_bazexpect(response).toredirect_to"htt

ruby-on-rails - 测试 "infinite loops"的最佳做法是什么?

我的基本逻辑是在某个地方运行一个无限循环并尽可能地测试它。无限循环的原因并不重要(游戏的主循环,类似守护进程的逻辑......)而且我更多地询问关于这种情况的最佳实践。让我们以这段代码为例:moduleBlahextendselfdefrunsome_initializer_methodloopdosome_other_methodyet_another_methodendendend我想使用Rspec测试方法Blah.run(我也使用RR,但简单的rspec将是一个可接受的答案)。我认为最好的方法是分解更多,比如将循环分离成另一个方法或其他东西:moduleBlahextendsel

ruby - 如何使用 RSpec should_receive 期待一些(但不是全部)参数?

classFoodefbar(a,b)...Foo.should_receive(:bar)期望使用任何参数调用bar。Foo.should_receive(:bar).with(:baz,:qux)期望:baz和:qux作为参数传入。如何期望第一个参数等于:baz,而不关心其他参数? 最佳答案 使用anything匹配器:Foo.should_receive(:bar).with(:baz,anything) 关于ruby-如何使用RSpecshould_receive期待一些(但不是

ruby - 你如何在 rspec/capybara 中测试一个 div 是否具有特定的 css 样式?

如何测试一个div标签是否具有特定的css样式?我正在尝试测试它是否有display:none;或display:block。我尝试了以下但它给了我一个错误:it{shouldhave_selector('signup_server_generic_errors',/display:\s*none/)} 最佳答案 我建议您不要尝试定位css样式,而是编写测试来查找css类名。通过这种方式,您可以更改底层的css样式,同时保持类不变,您的测试仍然会通过。搜索底层样式很脆弱。风格经常变化。将你的rspecs建立在寻找特定样式元素的基础上

ruby-on-rails - 在 RSpec 中,在 :all block 之前使用 let 变量

我的大部分测试中都有以下代码:describe'index'let(:company){FactoryGirl.create(:company)}let(:user){FactoryGirl.create(:user,company:company)}beforedosign_inuservisitproducts_pathend...end但我收到以下警告:WARNING:letdeclaration'user'accessedina'before(:all)'我的问题是,这样做的正确方法是什么?我找不到关于警告本身的太多信息。谢谢!编辑:我的目标是使用user变量,这样我就可以将它