2013-07-24 21 views
10

Nach dem Upgrade von Rails 3.2 auf Rails 4 funktioniert meine App, aber meine Tests, geschrieben mit Test-Unit, sind ein Desaster.Kann das Testgerät noch in Schienen 4 verwendet werden?

Es wird gemunkelt, dass Minitest mit der Testeinheit "kompatibel" ist. Wenn ich jedoch versuche, den (jetzt gebündelten) Minitest zu verwenden, gibt es eine Reihe von Unterschieden - von den Namen und Parametern der assert * -Anweisung zu (deutlich) vielen anderen Dingen, sowohl großen als auch subtilen.

Wenn ich stattdessen versuchen, Minitest zu vermeiden und versuchen, mein Test-Einheit gem zu halten in meinem Gemfile, Harke Test explodiert und sprach

undefined method 'refute_predicate' for class 'ActiveSupport::TestCase' 

Dieses aus führt

require 'rails/test_help' 

genannt haben: (

Ich habe eine Weile gesucht, aber noch keine Möglichkeit gefunden, Test-Unit weiter zu verwenden. Die einzige Alternative wäre eine (für uns, massive) Refactoring von o Ihr Testcode, da etwa 80% unserer Tests in irgendeiner Weise durch die Unverträglichkeiten von Minitest mit der Testeinheit unterbrochen werden.

Noch lesen, d. H. http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/ und http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3-2-to-rails-4-0 Ich finde keine Erwähnung in der Substanz - ich fühle mich wie muss etwas fehlen.

Ist es möglich, Minitest systematischer mit der Testeinheit kompatibel zu machen? Oder um Test-Unit in Rails 4 weiter zu verwenden?

+0

Können Sie genauer angeben, auf welche Inkompatibilitäten Sie gestoßen sind? – blowmage

+0

assert_include vs. assert_includes, assert_not_include vs. assert_not_includes, assert_false vs. refute, assert_true vs. assert. Die Methode process_with_new_base_test fehlt (es war notwendig, diese zu umbrechen, um zu verhindern, dass Controller-Instanzvariablen zwischen Anforderungen von Controller-Tests verschmiert werden). Mit einer Reihe von Tests immer noch gebrochen, gab ich an dieser Stelle auf. –

+0

Wäre es dir möglich, Remote Pairing durchzuführen? Erschieß mir eine E-Mail und wir werden es einrichten. – blowmage

Antwort

0

Ja Rails Unterstützung Test :: Unit Unterklasse. Hier ist der Leitfaden dafür.

http://guides.rubyonrails.org/testing.html

Verwenden Sie eine globale Suche & auf Ihrem Testfälle ersetzen, um die Methodennamen zu ändern. Hier

ist ein Integrationstest:

class UserFlowsTest < ActionDispatch::IntegrationTest 

Hier ist ein Controller-Test:

class UsersControllerTest < ActionController::TestCase 

rails new app Versuchen Sie, die automatisch generierten Helfer und Framework-Dateien und sehen Sie Beispiele zu kopieren.