我無法解決此錯誤。我不確定controller_spec的哪個部分寫錯了。請幫忙!rspec控制器測試:「期望#計數已更改-1,但已更改0」
路線
Rails.application.routes.draw do
resources :cases, only: [:index, :show, :new, :create, :edit, :update] do
resources :links, only: [:create, :destroy]
end
end
控制器
class LinksController < ApplicationController
before_action :prepare_case
def destroy
@link = @case_file.links.find(params[:id])
@link.destroy
redirect_to case_path(@case_file)
end
private
def prepare_case
@case_file = CaseFile.find(params[:case_id])
end
end
規格/工廠
FactoryGirl.define do
factory :link do
case_file
url 'www.google.com'
trait :invalid do
case_file nil
url ''
end
end
end
規格/控制器
require 'rails_helper'
RSpec.describe LinksController, type: :controller do
let(:user) { build(:user) }
before { login_user user }
#for user log in
let(:case_file) { create(:case_file) }
let(:link) { create(:link, case_file: case_file) }
describe "DELETE destroy" do
it "deletes a link" do
expect { delete :destroy, id: link.id , case_id: case_file }.
to change(Link, :count).by(-1)
expect(response).to redirect_to(case_path(case_file))
end
end
end
錯誤消息
$ rspec的投機/控制器/ links_controller_spec.rb ... F
失敗:
1)LinksController DELETE刪除銷燬鏈接 失敗/錯誤: expect {delete:destroy,id:link.id,case_id:case_file }。 改變(鏈接,:計數)。通過(-1)
預計#COUNT已經由-1變化,但由0 #./spec/controllers/links_controller_spec.rb:28:in`改變塊(3級)在'
在1.18秒成品(文件採取5.03秒加載) 4實施例中,1次失敗
失敗的例子:
rspec的./spec/controllers/links_controller_spec.rb :27#LinksController DELETE銷燬刪除鏈接
正在使用這些寶石: 寶石 'rspec的護欄', '〜> 3.0' 寶石 '早該-匹配器', '〜> 3.1' 寶石 'factory_girl_rails' –