草庐IT

ruby - rspec 是否有比 target.should < 6 更具体的内容?

http://cheat.errtheblog.com/s/rspec/具有不等式(例如小于或大于)target.shouldbe自备忘单创建以来,有没有更好的创建? 最佳答案 在RSpec的新期望语法中,您可以将其表示为:expect(target).tobe 关于ruby-rspec是否有比target.should https://stackoverflow.com/questions/6829231/

ruby - 使用 RSpec 检查某物是否是另一个对象的实例

我需要一种方法来使用RSpec检查一个对象是否是另一个对象的实例。例如:describe"newshirt"doit"shouldbeaninstanceofaShirtobject"#Howcanicheckifitisaninstanceofashirtobjectendend 最佳答案 首选语法是:expect(@object).tobe_aShirt旧的语法是:@object.shouldbe_an_instance_ofShirt请注意,两者之间存在非常细微的差别。如果Shirt从Garment继承,那么这两个期望都会通过

ruby - 为依赖于环境变量的代码编写规范的最佳方法是什么?

我正在测试一些从环境变量中提取其配置的代码(在生产环境中由Heroku配置变量设置,对于本地开发我使用foreman)。使用RSpec测试此类代码的最佳方法是什么?我想到了这个:before:eachdoENV.stub(:[]).with("AWS_ACCESS_KEY_ID").and_return("asdf")ENV.stub(:[]).with("AWS_SECRET_ACCESS_KEY").and_return("secret")end如果您不需要测试环境变量的不同值,我想您可以改为在spec_helper中设置它们。 最佳答案

ruby-on-rails - Controller 规范未知关键字 : id

我有简单的Action表演defshow@field=Field.find_by(params[:id])end我想为它写规范require'spec_helper'RSpec.describeFieldsController,type::controllerdolet(:field){create(:field)}it'shouldshowfield'doget:show,id:fieldexpect(response.status).toeq(200)endend但是我有一个错误Failure/Error:get:show,id:fieldArgumentError:unknown

ruby - Rubocop 25 行 block 大小和 RSpec 测试

典型的RSpec单元测试广泛使用嵌套的Rubyblock来构建代码并利用DSL“魔法”让规范像BDD语句一样阅读:describeFoodocontext"withabar"dobefore:eachdosubject{Foo.new().add_bar}endit"lookslikeabaz"doexpect#etc在理想的规范中,每个示例都可以相对简短和精确。然而,外部block增长到100行以上似乎很常见,因为RSpec结构以这种方式工作,并且没有采用很多规范示例,每个示例可能有几行特定设置,以获取describe与所描述主题的代码大小相同或更大的block。Rubocop最近的

ruby-on-rails - 如何在请求规范中 stub ApplicationController 方法

我需要在Rspec/capybara请求规范中stubcurrent_user方法的响应。该方法在ApplicationController中定义并使用helper_method。该方法应该只返回一个用户ID。在测试中,我希望此方法每次都返回相同的用户ID。或者,我可以通过在规范中设置session[:user_id]来解决我的问题(这是current_user返回的内容)...但这似乎不是要么工作。这两种可能吗?编辑:这是我得到的(它不工作。它只是运行正常的current_user方法)。require'spec_helper'describe"Login"dobefore(:eac

ruby-on-rails - Shoulda/RSpec 匹配器 - 条件验证

在我的代码中,我使用Shoulda匹配器进行了以下验证,效果很好:it{shouldvalidate_presence_of(:name)}在我的模型中,我已将条件添加到我的验证中:validates_presence_of:name,:if=>eligible?是否可以在验证中反射(reflect)出来?我试过查看documentation对于shoulda匹配器,但无法找到解决方案。非常感谢! 最佳答案 似乎shoulda_matchers不会这样做,但自己写起来很容易::context"ifeligible"dobefore{

ruby-on-rails - Guard with RSpec on Rails 4 发出大量警告

我想知道如何在运行简单测试时关闭所有这些警告:[1]guard(main)>16:59:46-INFO-Runall16:59:46-INFO-Runningallspecs/Users/esjd/.rvm/gems/ruby-2.1.2/gems/rspec-rails-3.0.1/lib/rspec/rails/adapters.rb:124:warning:instancevariable@examplenotinitialized/Users/esjd/.rvm/gems/ruby-2.1.2/gems/rspec-rails-3.0.1/lib/rspec/rails/ada

ruby-on-rails - Rspec 3 如何测试 flash 消息

我想用rspec测试Controller的Action和flash消息的存在。行动:defcreateuser=Users::User.find_by_email(params[:email])ifuseruser.send_reset_password_instructionsflash[:success]="Resetpasswordinstructionshavebeensentto#{user.email}."elseflash[:alert]="Can'tfinduserwiththisemail:#{params[:email]}"endredirect_toroot_pa

ruby Rspec : Testing instance variables without adding an accessor to source

我正在尝试测试以下方法:defunprocess_move(board,move)ifmove[0].instance_of?(Array)multi_move=@multi_move.pop(2).reversemulti_move.eachdo|single_move|unapply_move(board,single_move)endelseboard=unapply_move(board,move)endboardend我想为@multi_move设置状态,但我不想添加仅用于测试的访问器。有没有办法在没有访问器的情况下这样做?谢谢。 最佳答案