Пусть у меня есть настройки, как это:RSpec контроллер для вложенных ресурсов, before_action
конфигурации/routes.rb
resources :graves do
resources :candles
end
приложение/модели/grave.rb
has_many :candles, dependent: :destroy
приложение/модели/свечи.rb
belongs_to :grave
приложение/продолжение Ролики/candles_controller.rb
before_action :get_grave
def create
@candle = @grave.candles.new(candle_params)
respond_to do |format|
if @candle.save
format.html {
redirect_to @grave, notice: 'Candle was successfully created.'
}
format.json { }
else
format.html { render :new }
format.json { render json: @candle.errors, status: :unprocessable_entity }
end
end
end
private
def candle_params
params.require(:candle).permit(:name, :body)
end
def get_grave
@grave = Grave.find(params[:grave_id])
end
спецификации/Контроллеры/candles_controller_spec.rb
describe CandlesController, type: :controller do
describe "POST create" do
before(:each) do
@grave = FactoryGirl.create(:grave)
end
it "creates candle" do
post :create, candle: { name: "Dummy name", body: "Dummy body", grave_id: @grave.id}
expect(response).to redirect_to(@grave)
end
end
end
Проблема заключается в том, когда я запускаю эту спецификацию я получаю эту ошибку:
1) CandlesController POST create creates candle Failure/Error: expect(response).to redirect_to(@grave) Expected response to be a < redirect >, but was <404>
Я проверил FactoryGirl и @grave
создано так, что это не ноль. Когда я тестирую вручную, candle
создан правильно и связан с grave
. Любые подсказки, которые могут вызвать ошибку спецификации?
Rails 4.2, RSpec 3.x