2016-02-16 28 views
0

我寫了一個小的服務,這就需要PARAMS:[:search][:area], [:search][:floor]等 我寫測試:Rspec的發送PARAMS向受試者

subject { AwesomeService.new(params) } 
let(:params) do 
    { 
    "search" => { 
     'area' => object1.area, 
     'floor' => object1.floor 
    } 
    } 
end 

但我的測試失敗(手動很好地工作)。當我在測試模式下調試我的服務時,params[:search][:floor]NULL。我如何在測試中修復我的參數?

+1

這是怎麼回事? –

+0

你可以發佈你的測試嗎? – jvnill

回答

3

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 
    } 
    } 
end