2010-09-07 3 views
5

Ich versuche, meine Rails-Anwendung auf Rails3 zu aktualisieren.NameError: nicht initialisierte Konstante Test :: Unit :: AssertionFailedError beim Aktualisieren auf rails3

Wenn ich Funktionstests ausführen, bekomme ich viele NameError: uninitialized constant Test::Unit::AssertionFailedError Fehler. Aber Unit Tests und Website selbst scheint gut zu funktionieren.

Trace sieht wie folgt aus:

NameError: uninitialized constant Test::Unit::AssertionFailedError 
/Users/mantas/.rvm/gems/ruby-1.9.2-p0/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing_from_s3_library' 
/Users/mantas/.rvm/gems/ruby-1.9.2-p0/bundler/gems/shoulda-02520e4/lib/shoulda/action_controller/matchers/redirect_to_matcher.rb:52:in `rescue in redirects_to_url?' 
/Users/mantas/.rvm/gems/ruby-1.9.2-p0/bundler/gems/shoulda-02520e4/lib/shoulda/action_controller/matchers/redirect_to_matcher.rb:48:in `redirects_to_url?' 
/Users/mantas/.rvm/gems/ruby-1.9.2-p0/bundler/gems/shoulda-02520e4/lib/shoulda/action_controller/matchers/redirect_to_matcher.rb:35:in `matches?' 
/Users/mantas/.rvm/gems/ruby-1.9.2-p0/bundler/gems/shoulda-02520e4/lib/shoulda/assertions.rb:53:in `assert_accepts' 
/Users/mantas/.rvm/gems/ruby-1.9.2-p0/bundler/gems/shoulda-02520e4/lib/shoulda/context.rb:324:in `block in should' 
/Users/mantas/.rvm/gems/ruby-1.9.2-p0/bundler/gems/shoulda-02520e4/lib/shoulda/context.rb:382:in `call' 
/Users/mantas/.rvm/gems/ruby-1.9.2-p0/bundler/gems/shoulda-02520e4/lib/shoulda/context.rb:382:in `block in create_test_from_should_hash' 

Beide Shoulda und Amazon S3 Edelsteine ​​neuesten Versionen sind.

Irgendwelche Ideen, was ich falsch mache?

Antwort

6

Dies wurde gemeldet http://github.com/thoughtbot/shoulda/issues/issue/117.

Die Arbeit um (das zumindest dieser Fehler weggeht macht, wenn es tatsächlich Werke Recht nicht sicher) ist:

unless defined?(Test::Unit::AssertionFailedError) 
    class Test::Unit::AssertionFailedError < ActiveSupport::TestCase::Assertion 
    end 
end 
+0

Ooops - Ich habe vergessen zu metion, habe ich diese Schnipsel in Test/test_helper.rb –

6

-Lösung Ash Berlin wird die Ausnahme weggehen, aber es wird machen alle Matchierer, die try und catchTest::Unit::AssertionFailedError fehlschlagen. Wenn AssertionFailedError ein ActiveSupport::TestCase::Assertion ist, und Sie einen ActiveSupport::TestCase::Assertion werfen, werden Sie es nicht als Test::Unit::AssertionFailedError fangen. Er hat seine Vererbungsbeziehung rückwärts. Stattdessen diese test_helper.rb in Ihrem setzen:

unless defined?(Test::Unit::AssertionFailedError) 
    Test::Unit::AssertionFailedError = ActiveSupport::TestCase::Assertion 
end 
Verwandte Themen