【发布时间】:2016-09-20 19:27:35
【问题描述】:
假设我有这样的设置:
config/routes.rb
resources :graves do
resources :candles
end
app/models/grave.rb
has_many :candles, dependent: :destroy
app/models/candles.rb
belongs_to :grave
app/controllers/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
spec/controllers/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 创建蜡烛 失败/错误:expect(response).to redirect_to(@grave) 预期响应为
,但为
我检查了 FactoryGirl 并创建了 @grave,所以它不是零。当我手动测试时,candle 被正确创建,并且与grave 相关联。任何可能导致规范失败的线索?
Rails 4.2,RSpec 3.x
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 rspec rspec3