小编use*_*888的帖子

RSpec:如何测试哈希数组中键的存在?

我有一节课:

class ApiParser
  def initialize
    ..
  end

  def api_data
    # returns an array of hashes like so:
    # [{ answer: "yes", name: "steve b" age: 22, hometown: "chicago", ... },
    # { answer:"unsure", name: "tom z", age: 44, hometown: "baltimore" , ... },
    # { answer: "no", name: "the brah", age: nil, hometown: "SF", ... }, 
    # { ... }, { ... }, ... ]
  end
end
Run Code Online (Sandbox Code Playgroud)

该方法返回一个哈希数组.数组的长度为50个元素.

每个哈希都具有完全相同的密钥.大约有20把钥匙.

我不确定什么是单元测试这种方法的最佳方法.如何确定该方法确实返回一个数组,每个哈希具有这些键?一些哈希值可能是零,所以我不认为我会测试这些值.

ruby hash unit-testing rspec

3
推荐指数
1
解决办法
4533
查看次数

Rails params.require on empty hash

在我的一个控制器中,我有这条线:

params.require(:ad).permit(permitted_array)
Run Code Online (Sandbox Code Playgroud)

params[:ad]哈希.当此哈希中存在允许的密钥时,此行正常工作.如果params[:ad]是空哈希,则上述行失败.

示例:对于params

{"ad"=>{}, "controller"=>"ads", "action"=>"create"}
Run Code Online (Sandbox Code Playgroud)

params.require(:ad)调用后我收到此错误:

ActionController::ParameterMissing:
   param is missing or the value is empty: advertiser
Run Code Online (Sandbox Code Playgroud)

但这很好用:

[2] pry()> params
=> {"ad"=>{"name"=>"kjj", "ad_type_id"=>1, "fee"=>"9", "click_attr"=>"8", "imp_attr"=>"7"}, "controller"=>"ads", "action"=>"create"}
[3] pry()> params.require(:ad).permit(permitted_array)
=> {"name"=>"kjj", "ad_type_id"=>1, "fee"=>"9", "click_attr"=>"8", "imp_attr"=>"7"}
Run Code Online (Sandbox Code Playgroud)

如何让这一行接受空哈希?

hash ruby-on-rails strong-parameters

3
推荐指数
1
解决办法
2705
查看次数

检查是否使用 RSpec 返回类引用?

假设我已经按照以下方式定义了 Ruby 类:

class Blah
  def self.ref_class
    ::Other::Thing
  end
end
Run Code Online (Sandbox Code Playgroud)

.ref_class返回一个类引用(这就是它的名字,对吧?)。如何使用 RSpec 测试此方法?

ruby rspec ruby-on-rails rspec-rails

2
推荐指数
1
解决办法
1865
查看次数