我是Rails中的新手,试图测试batiment
的创建以及重定向到此show
的{{1}}页面。
batiments_controller_test.rb
batiment
batiments_controller.rb
test "should create batiment" do
post :create, batiment: {nom: "New batiment"}
assert_response :success
assert_redirected_to assigns(:batiment)
end
路由
def create
@batiment = Batiment.new(batiment_params)
if @batiment.save
flash[:notice] = "Bâtiment créé!"
redirect_to @batiment
else
render('new')
end
end
运行测试时的终端:
POST /batiments(.:format) batiments#create
new_batiment GET /batiments/new(.:format) batiments#new
edit_batiment GET /batiments/:id/edit(.:format) batiments#edit
batiment GET /batiments/:id(.:format) batiments#show
答案 0 :(得分:1)
当然无法创建batiment,因此该操作会呈现视图'new'
。这解释了为什么assert_response :success
通过了(请求返回了http代码200),以及为什么assert_redirected_to assigns(:batiment)
失败了(batiment没有保存,所以它没有id)。
检查保存失败的原因(可能是验证失败?检查@batiment.errors
),然后重写测试:
test 'should create batiment' do
assert_difference('Batiment.count') do
post :create, batiment: {nom: 'New batiment'}
end
assert_redirected_to assigns(:batiment)
end