2017-02-12 1 views
2

Rails 5 führten einige deprecation Nachrichten in meinen TestsWie wird die Warnung "Positionsargumente in Funktionstests ist veraltet" behoben?

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. 

Für diesen größten Teil dieser leicht gewesen zu lösen. Die Anweisungen sind in der Nachricht ziemlich klar.

Aber ich bekomme immer noch diese Warnungen für Controller-Spezifikationen, die starke Params testen.

Wie sollte das Folgende für die Vorbereitung auf Rails 5.1 neu geschrieben werden?

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

ich denke, Sie einige shoulda verwenden? das könnte eine aktualisierte Version benötigen. – phoet

+0

danke @phoet, ja ich benutze sollte Matcher. Aber meine Frage kann allgemeiner sein als diese (nicht sicher, wie ich ein wenig verwirrt bin durch die Controller Änderungen Rails 5 eingeführt hat, und was ist jetzt der "Rails Way"). Es scheint, dass man Controller Internals nicht testen sollte, und diese Controller-Spezifikationen sind nicht der Weg nach vorne https://github.com/rails/rails/issues/18950. Im Allgemeinen, wie und wo würden Sie testen, dass ein Controller die richtigen Parameter in Rails 5 zulässt? –

+0

vielleicht sollten Sie dann Ihre Frage umformulieren? Ich denke, Controller Tests für Integration Tests loszuwerden ist dumm, aber ich bin nicht DHH, also was weiß ich ... – phoet

Antwort

Verwandte Themen