2017-05-24 39 views
4

我剛剛在Rails 5中開始了一個新項目,(我的第一個,雖然我在Rails 4.x中有幾個項目),並且在控制器規格方面有問題。Rspec 3.6,Rails 5錯誤:錯誤數量的參數(給定2,期望1)`post`請求

describe RequestsController, :type => :controller do 

    it "receives new request" do 
    post :accept_request, my_params 
    end 

end 

返回錯誤:

Failure/Error: post :accept_request, my_params 

ArgumentError: 
    wrong number of arguments (given 2, expected 1) 

我知道有已在優選的測試策略用於與導軌5的控制器的移位作爲Everyday Rails指出的,具體地,變速控制器測試到請求規格,但沒有改變這種基本的控制器測試方法。

回答

15

看來,Rails 5期望關鍵字參數,而不是散列參數,這是從以前的版本的變化。另外,第一個參數是一個URL而不是一個動作。嘗試

post some_url, params: some_hash 
+1

太棒了!你能告訴我你是如何找到這個的?或關於「關鍵字參數」的進一步文檔?我做了相當多的搜索,包括Rails的升級說明和RSpec的GitHub升級部分,這仍然沒有我。只是一些幫助,如何保持更新最新的事情,像這樣或其他微妙的Rails 5更新。 – Nick

+0

另外,FWIW,'post'仍然只接受一個動作,不需要url。 – Nick

+1

至於我如何找到這個,我幾年來一直在回答關於控制器測試的問題,所以我馬上知道這個陳述在以前的版本中有效。這縮小了Rails 5的變化。快速搜索引發了這篇博客文章:http://blog.bigbinary.com/2016/04/19/changes-to-test-controllers-in-rails-5。其中提到切換到關鍵字參數的HTML。 – zetetic

0

我用Rails 5.1.2和Ruby 2.3.4版和Mac OS塞拉利昂。 我有同樣的錯誤。 我想。這是由rb-fsevent引起的臨時錯誤。

我把「gem rb-fsevent」,「0.9.8」放在gem文件中。 之後我從命令終端運行命令寶石更新

現在它工作正常

相關問題