2016-12-15 3 views
0

Ich habe einen Fehler in einer Rails 4.2.7.1 Controller-Aktion, wo ich die eingehenden Parameter ändern:Wie teste ich eine Rails-Aktion mit eingefrorenen Strings als Parameter?

params[:temperature].gsub!(',', '.') 

Bis vor kurzem das funktionierte, aber es funktioniert nicht in der Entwicklung und Produktion jetzt:

can't modify frozen String 

Update: die Ursache des gefrorenen String ist der Kommentar am Anfang der Datei application_controller.rb:

# frozen_string_literal: true 

Ich habe eine Lösung für das Problem, aber ich habe keinen Test, der den Fehler aufdeckt. Sowohl mein Controller-Test als auch mein Integrationstest gelingen mit dem fehlerhaften Code, und ich sehe, dass die Parameter im Controller nicht eingefroren sind, selbst wenn sie eingefroren sind, wenn sie vom Test gesendet werden.

Wie kann ich sicherstellen, dass in meinem Test eingefrorene Parameter im Controller ankommen?

+0

Welche Version von Ruby verwenden Sie? –

+0

Ich verwende Ruby 2.3.1 und JRuby 9.1.5.0 mit den gleichen Ergebnissen. – donV

Antwort

0

Sie können Ihre App auf die gleiche Weise wie die normale Verwendung testen, indem Sie die Edelstein- und Feature-Tests Capybara verwenden. Dies verwendet einen tatsächlichen Webbrowser, um Ihre App auszuüben. Es hat meinen Fehler perfekt aufgedeckt.

Der Nachteil ist, dass es viel langsamer als ein Controller-Test oder ein Integrationstest ist, um 10-100 mal.

Verwandte Themen