2017-02-12 34 views
2

導軌5在我的測試中如何解決這個「功能測試中的位置參數已被棄用」的警告?

DEPRECATION WARNING: Using positional arguments in functional tests has been deprecated, 
in favor of keyword arguments, and will be removed in Rails 5.1. 

Deprecated style: 
get :show, { id: 1 }, nil, { notice: "This is a flash message" } 

New keyword style: 
get :show, params: { id: 1 }, flash: { notice: "This is a flash message" }, 
    session: nil # Can safely be omitted. 

對於這個大部分推出了一些過時的消息,這些都容易解決。消息中的指示非常清楚。

但我仍然收到這些警告的控制器規格,測試強參數。

應該如何重寫以下內容來準備Rails 5.1?

let(:user) { create :user } 
it { is_expected.to permit(:name, :email).for(:update, params: { id: user.to_param, user: valid_attributes }).on(:user) } 
+0

我猜你使用的是一些早該?可能需要更新版本。 – phoet

+0

謝謝@phoet,是的,我正在使用應匹配器。但是我的問題可能比這更籠統(不確定,因爲我對Rails 5引入的控制器更改以及現在的Rails方法有些困惑)。看起來,不應該測試控制器內部,並且該控制器規格不是前進的方式https://github.com/rails/rails/issues/18950。從廣義上講,你如何以及在哪裏測試一個控制器在Rails 5中允許正確的參數? –

+0

也許你應該改說你的問題呢?我認爲擺脫控制器測試贊成集成測試是愚蠢的,但我不是DHH,所以我知道什麼... – phoet

回答

相關問題