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) }
ich denke, Sie einige shoulda verwenden? das könnte eine aktualisierte Version benötigen. – phoet
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? –
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