У меня есть несколько маршрутов, которые должны существовать только в среде разработки, но я не могу получить спецификации для этой работы. Есть идеи, что я делаю не так? Я сначала попробовал это в контроллере spe c, но потом понял, что мне нужно: type =>: маршрутизация для использования be_routable, поэтому выделил это. Я отладил и Rails.env имеет значения, которые я ожидаю в каждом контексте. Нужно ли перезагрузить маршруты? Попытка сделать это, но не может найти синтаксис, которым rspe c доволен ...
Фрагмент от routs.rb:
resources :users do
collection do
...
if Rails.env.development?
get :new_development_account
post :create_development_account
end
end
...
Routing spe c:
require 'spec_helper'
describe "routes for users controller", :type => :routing do
context "production environment" do
it "development routes do not exist" do
allow(Rails).to receive(:env) { "production".inquiry }
expect(:get => "/ims/users/new_development_account").not_to be_routable
expect(:post => "/ims/users/create_development_account").not_to be_routable
end
end
context "development environment" do
it "development routes exist" do
allow(Rails).to receive(:env) { "development".inquiry }
expect(:get => "/ims/users/new_development_account").to be_routable
expect(:post => "/ims/users/create_development_account").to be_routable
end
end
end
Что особенно странно, это то, что он не прошел оба теста:
Failures:
1) routes for users controller production environment development routes do not exist
Failure/Error: expect(:get => "/ims/users/new_development_account").not_to be_routable
expected {:get=>"/ims/users/new_development_account"} not to be routable, but it routes to {:action=>"show", :controller=>"ims/users", :id=>"new_development_account"}
# /var/code/bundle/ruby/2.2.0/gems/given_core-3.5.4/lib/given/rspec/monkey.rb:31:in `handle_matcher'
# ./spec/routing/users_controller_spec.rb:9:in `block (3 levels) in <top (required)>'
# ./spec/support/database_cleaner.rb:18:in `block (2 levels) in <top (required)>'
2) routes for users controller development environment development routes exist
Failure/Error: expect(:post => "/ims/users/create_development_account").to be_routable
expected {:post=>"/ims/users/create_development_account"} to be routable
# /var/code/bundle/ruby/2.2.0/gems/given_core-3.5.4/lib/given/rspec/monkey.rb:21:in `handle_matcher'
# ./spec/routing/users_controller_spec.rb:18:in `block (3 levels) in <top (required)>'
# ./spec/support/database_cleaner.rb:18:in `block (2 levels) in <top (required)>'