2015-04-08 52 views
0

改變了我有這樣的特徵:Rspec的 - 預計#COUNT由1變了,但被0

feature "Blog features -", type: :feature, js: true do 
    let!(:admin) { FactoryGirl.create(:admin) } 

    scenario "Create new Blog" do 
    expect do 
     sign_in_as_admin(admin) 
     visit "/admin/blogs/new" 

     fill_in "blog_title", with: "title" 
     fill_in "blog_content", with: "lorem ipsum dolor" 
     click_button "Save" 
    end.to change(Blog, :count).by(1) 
    end 

end 

博客是正確保存在數據庫中,但測試沒有通過,我得到這個錯誤:expected #count to have changed by 1, but was changed by 0

+0

嘗試更改(Blog.count)。從(0)。到(1) – forthowin

+0

然後我得到:預期#count已從0更改爲1 - 但沒有更改,但博客正在正確保存在db :/ – darkcode

+2

你爲什麼要把這段代碼放在期望的任何原因?你可以移動它,並在click_button「保存」後,預計(Blog.count).to eq(1) – forthowin

回答

0

我不太瞭解您的設置,以確定它是上游代碼中的錯誤,還是僅僅是競爭條件。我的直覺告訴我你正在比賽。嘗試在click save之後添加睡眠以查看是否有幫助。

如果您的測試正在爲您的服務器啓動第二個進程(我懷疑它是這樣),那麼您的測試正在觸發一個請求(將在未來某個時間由服務器處理),然後立即檢查blog count 。當您檢查博客數量時,請求尚未由您的服務器處理。

而不是檢查數據庫級別的博客數量,我建議檢查頁面上的文本或元素。用戶正在從保存權利中獲得一些反饋?堅決反對。

相關問題