我编写了一个小服务,它需要params:[:search][:area], [:search][:floor]等。我编写了测试:
subject { AwesomeService.new(params) }
let(:params) do
{
"search" => {
'area' => object1.area,
'floor' => object1.floor
}
}
end但是我的测试失败了(手动操作非常好)。当我在测试模式中调试我的服务时,params[:search][:floor]是NULL。我怎样才能在考试中修正我的对撞机?
发布于 2016-02-16 09:14:33
rails中的params对象不关心是否将其中的值作为符号或字符串查找:
params[:search][:floor] == params['search']['floor']不过,ruby中的Hash是不同的--如果将字符串作为键插入,则需要使用字符串查询字符串。
param_hash[:search][:floor] != params['search']['floor']您将params存根作为一个哈希。这意味着您应该用符号而不是字符串来设置它,或者使用HashWithIndifferentAccess。
subject { AwesomeService.new(params) }
let(:params) do
ActiveSupport::HashWithIndifferentAccess.new {
"search" => {
'area' => object1.area,
'floor' => object1.floor
}
}
endhttps://stackoverflow.com/questions/35427918
复制相似问题