2013-04-01 3 views
0

Вот мой RSpec код: -удалить элемент в массиве Hash в RSpec

it "should match with valid address" do 
    get :index, Devise.token_authentication_key => @user.authentication_token, business_id: @business2.id 
    expect(response.status).to eq(200) 
    expect(response.body).to eq([@location].to_json(LocationFinder::API_PARAMS.merge(:root => false))) 
    end 

ожидается:

"[ 
    { 
    \"address\":\"1120 Milky Way\", 
    \"business_id\":1, 
    \"city\":\"Cupertino\", 
    \"latitude\":\"2.4\", 
    \"longitude\":\"2.9\", 
    \"name\":\"Joe's Diner\" 
    } 
    ]" 

получил:

"[ 
    { 
    \"address\":\"1120 Milky Way\", 
    \"business_id\":1, 
    \"city\":\"Cupertino\", 
    \"latitude\":\"2.4\", 
    \"longitude\":\"2.9\", 
    \"name\":\"Joe's Diner\", 
    \"distance\":712.7948793 
    } 
    ]" 

Как я могу удалить «расстояние» в этот массив, который содержит значение хеша. поэтому мой тест будет успешным.

+0

формат кода правильно –

+1

ли это хэш, или строка Json? – Linuxios

+0

Этот выход получен от rspec, и это может быть выход json –

ответ

3

Вы можете удалить key из этого хэша с помощью метода delete, например:

require 'json' 
a = "[ 
    { 
    \"address\":\"1120 Milky Way\", 
    \"business_id\":1, 
    \"city\":\"Cupertino\", 
    \"latitude\":\"2.4\", 
    \"longitude\":\"2.9\", 
    \"name\":\"Joe's Diner\", 
    \"distance\":712.7948793 
    } 
    ]" 

    a = JSON.parse(a) 
    a[0].delete "distance" 
    p a 

    #output: 

    # [{"address"=>"1120 Milky Way", "business_id"=>1, "city"=>"Cupertino", "latitude"=>"2.4", "longitude"=>"2.9", "name"=>"Joe's Diner"}] 
+0

его не работает в rspec !! –

+0

@GauravSharma Вам нужно будет обновить вопрос соответствующим кодом rspec, чтобы он не работал. – fmendez

+0

Не используйте 'JSON.load', если вам явно не нужно десериализовать объект, созданный с помощью' JSON.dump' (которого вы в принципе никогда не должны делать). Вместо этого вы должны использовать 'JSON.parse' и' JSON.generate'. Механизм 'load' /' dump' восприимчив к тем же серьезным проблемам безопасности, что и у YAML (и который вызывает довольно большое горе среди людей Rails) –

Смежные вопросы