首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rspec发送params到subject

Rspec发送params到subject
EN

Stack Overflow用户
提问于 2016-02-16 08:56:50
回答 1查看 2.4K关注 0票数 1

我编写了一个小服务,它需要params:[:search][:area], [:search][:floor]等。我编写了测试:

代码语言:javascript
复制
subject { AwesomeService.new(params) }
let(:params) do
  {
    "search" => {
      'area' => object1.area,
      'floor' => object1.floor
    }
  }
end

但是我的测试失败了(手动操作非常好)。当我在测试模式中调试我的服务时,params[:search][:floor]NULL。我怎样才能在考试中修正我的对撞机?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-16 09:14:33

rails中的params对象不关心是否将其中的值作为符号或字符串查找:

代码语言:javascript
复制
params[:search][:floor] == params['search']['floor']

不过,ruby中的Hash是不同的--如果将字符串作为键插入,则需要使用字符串查询字符串。

代码语言:javascript
复制
param_hash[:search][:floor] != params['search']['floor']

您将params存根作为一个哈希。这意味着您应该用符号而不是字符串来设置它,或者使用HashWithIndifferentAccess

代码语言:javascript
复制
subject { AwesomeService.new(params) }

let(:params) do
  ActiveSupport::HashWithIndifferentAccess.new {
    "search" => {
      'area' => object1.area,
      'floor' => object1.floor
    }
  }
end
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35427918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档