我是新來的Rspec,我想測試我的控制器方法的基本功能。我知道我不應該測試基本功能,但是我爲了學習的目的而不是創建一些東西。Rspec後:創建'未知的關鍵字:'
我有一個名爲ProtocolsController的控制器。該控制器用於基本的CRUD功能。我試圖測試控制器#create方法。下面是我的#創建控制器:
def create
@protocol = Protocol.new(protocol_params)
if @protocol.save
flash[:notice] = 'New protocol added'
redirect_back(fallback_location: 'test_results#index')
else
flash[:notice] = @protocol.errors[:name]
render 'new'
end
end
要測試傷心的路,我想傳遞給控制器,它包含了必要的參數創建協議類的實例模仿對象。要做到這一點,我有以下代碼:
describe '#create' do
it 'fails to save because the name already exists' do
params = FactoryGirl.attributes_for(:protocol)
post :create, :protocol => params
end
end
現在我知道測試是不完整的,但我在一次測試一條線,當我運行Rspec的,我得到以下錯誤:
Failure/Error: post :create, :protocol => params
ArgumentError:
unknown keyword: protocol
但是,當我改變後:expect { post :create, :protocol => params }
它的工作。這讓我想起我的問題:
- 爲什麼第一篇文章(
post :create, :protocol => params
)失敗? - 我該如何去發送模擬對象到控制器?
- 爲什麼預期版本有效?
任何洞察到的問題將不勝感激。我一直在摸索着解決這個問題,我的猜測是這是一個明顯的答案。
您使用的是哪種版本的RSpec? –
最新版本 - > 3.6 – Darkisa