의 RoR 컨트롤러와 실패 :예기치 않은 테스트 RSpec에와 공장
def destroy
Page.find(params[:id]).destroy
@pagechildren = Page.where("parent_id = ?", params[:id])
@pagechildren.update_all({parent_id: -1}) if @pagechildren.count >
0
flash[:success] =
t('activerecord.errors.controllers.message.attributes.page.page_destroy_suc cess')
redirect_to pages_path
end
테스트 RSpec에
it "should remove parent_id from children" do
@page2 = Factory(:page)
@pagechild = Factory(:page)
@pagechild[:parent_id] = @page2.id
lambda do
delete :destroy, :id => @page2
end.should
change(@pagechild, :parent_id).from(@page2.id).to(-1)
end
코드가 제대로() 작동하지만
Код все корректно обрабатывает (캐치 'ID' 페이지를 삭제하고 모두 자식 parent_id가 -1로 변경됨). 그러나 rspec 테스트는 실패합니다.
공장 :
Factory.define :page do |page|
page.name "Name example page"
page.title "Title example page"
page.content "Content example page"
page.metadescription "metadescription example page"
page.metakeywords "metakeywords example page"
page.head "head example page"
page.ismenu true
page.order_id -1
page.parent_id -1
end
테스트 = 빨간색 ( 뭐가 잘못
RSpec에 테스트는 말한다 : PARENT_ID -1 – Danko
에 의해 변경되지 않습니다 실패한 주장하고 테스트되는 코드 무엇을 좁힐하시기 바랍니다. –
컨트롤러 액션에 대한 코드가 너무 많으면 모델로 이동하려고 시도합니다. 예를 들어'Page.find (params [: id]). destroy_unsetting_children'. BTW, 외래 키가'NULL' 대신에'-1'로 설정되어야하는 데이터베이스는 무엇입니까? – tokland