Geocoder Gem тестирование IP-запроса
Я хочу проверить следующую строку на мой взгляд:
приложение / просмотров / продукты /index.html.erb
<%= render @products %>
приложение / просмотров / продукты /_product.html.erb
<td><%= distance_between(@current_location, product.location) %></td>
@products
а также @current_location
определены в связанном контроллере:
def index
@products = Product.all
end
А также:
unless @current_location
if !current_user.nil?
@current_location = current_user.location
else
@current_location = request.location
end
end
distance_between
Метод определяется в помощнике местоположения:
def distance_between(here, there)
t('location.distance.kilometre', count: here.distance_to(there, :km).round(1))
end
Итак, мой тест:
let(:current_location) { request.location }
it { should have_selector('td', text: distance_between(product.location, current_location))}
И сообщение об ошибке:
Failure/Error: it { should have_selector('td', text: distance_between(product.location, current_location))}
NoMethodError:
undefined method `location' for nil:NilClass
Shared Example Group: "product's informations" called from ./spec/requests/product_index_page_spec.rb:119
# ./spec/requests/product_index_page_spec.rb:118:in `block (4 levels) in <top (required)>'
# ./spec/support/products/index.rb:31:in `block (2 levels) in <top (required)>'
В процессе производства geocoder gem может запрашивать IP-адрес пользователя и отображать его местоположение с помощью request.location
, но я не знаю, как это сделать в среде тестирования или разработки. Можете ли вы помочь мне исправить мой код?