簡體   English   中英

RSpec控制器銷毀測試

[英]RSpec Controller Destroy Testing

我正在構建一個測試應用程序,允許用戶創建/刪除帖子。 我的銷毀動作中有一個錯誤,很難調試。 這是我的測試:

  describe '#destroy' do
    context 'existing post' do
      let (:post) { FactoryGirl.create(:post) }

      it 'removes post from table' do
        expect { delete :destroy, id: post }.to change { Post.count }.by(-1)
      end

      it 'renders index template' do
        delete :destroy, id: post
        expect(response).to render_template('index')
      end
    end

    context 'delete a non-existent post' do
      it 'creates an error message' do
        delete :destroy, id: 10000
        expect(flash[:errors]).to include("Post doesn't exist")
      end
    end
  end

這是我的銷毀動作:

  def destroy
    @post = Post.find_by(id: params[:id])
    if @post
      @post.destroy
    else
      flash[:errors] = "Post doesn't exist"
    end
    render :index
  end

我在操作中放入了調試器,看起來該帖子已找到並被正確刪除,因此我懷疑問題出在我評估測試的方式上。 這是我失敗的規格:

  1) PostsController#destroy existing post removes post from table
     Failure/Error: expect { delete :destroy, id: post }.to change { Post.count }.by(-1)
       expected result to have changed by -1, but was changed by 0

這里發生了什么?

我認為您的帖子已創建,但在評估了第一筆之后。 讓我們確保它是使用let!創建的let!

let!(:post) { FactoryGirl.create(:post) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM