让说我有设置是这样的:RSpec的控制器嵌套的资源,before_action
的config/routes.rb中
resources :graves do
resources :candles
end
应用程序/模型/ grave.rb
has_many :candles, dependent: :destroy
应用程序/模型/蜡烛.rb
belongs_to :grave
app/cont辊/ 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
关联。任何可能导致spec失败的线索?
的Rails 4.2,RSpec的3.X