2012-04-10 9 views
0

Viele meiner Angaben enthalten versagen und mir eine Fehlermeldung über __mock_proxy():Unerwarteter Aufruf: __mock_proxy(), wenn rspec Spezifikationen ausgeführt wird, die mock_model

$ rspec spec/helpers/liaisons_helper_spec.rb 
WARNING: Cucumber-rails required outside of env.rb. The rest of loading is being defered until env.rb is called. 
    To avoid this warning, move 'gem cucumber-rails' under only group :test in your Gemfile 
FF 

Failures: 

    1) LiaisonsHelper hrefs_of_email_addresses_for_liaison to enumerate email_addresses as RESTful links 
    Failure/Error: email_address = mock_model(EmailAddress) 
    Mocha::ExpectationError: 
     unexpected invocation: #<Mock:EmailAddress_1001>.__mock_proxy() 
     unsatisfied expectations: 
     - expected exactly once, not yet invoked: #<Mock:EmailAddress_1001>.id(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:EmailAddress_1001>.blank?(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:EmailAddress_1001>.valid?(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:EmailAddress_1001>.marked_for_destruction?(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:EmailAddress_1001>.destroyed?(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:EmailAddress_1001>.persisted?(any_parameters) 
    # ./spec/helpers/liaisons_helper_spec.rb:6:in `block (3 levels) in <top (required)>' 

    2) LiaisonsHelper hrefs_of_phone_numbers_for_liaison to enumerate phone_numbers as RESTful links 
    Failure/Error: phone_number = mock_model(PhoneNumber) 
    Mocha::ExpectationError: 
     unexpected invocation: #<Mock:PhoneNumber_1002>.__mock_proxy() 
     unsatisfied expectations: 
     - expected exactly once, not yet invoked: #<Mock:PhoneNumber_1002>.id(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:PhoneNumber_1002>.blank?(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:PhoneNumber_1002>.valid?(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:PhoneNumber_1002>.marked_for_destruction?(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:PhoneNumber_1002>.destroyed?(any_parameters) 
     - expected exactly once, not yet invoked: #<Mock:PhoneNumber_1002>.persisted?(any_parameters) 
    # ./spec/helpers/liaisons_helper_spec.rb:19:in `block (3 levels) in <top (required)>' 

Ich bin mit Rails 3.1.4 und 1.9.2 Ruby und ist mit diesen Edelsteinen:

$ bundle list | grep mocha 
    * mocha (0.10.5) 
    * rspec-rails-mocha (0.3.1) 
$ bundle list | grep rspec 
    * rspec (2.8.0) 
    * rspec-apotomo (0.9.6) 
    * rspec-cells (0.1.2) 
    * rspec-core (2.8.0) 
    * rspec-expectations (2.8.0) 
    * rspec-mocks (2.8.0) 
    * rspec-rails (2.8.1) 
    * rspec-rails-mocha (0.3.1) 

ich mehrere Berichte von Menschen, immer die gleichen Fehler gefunden habe, einschließlich this one on github, aber sie alle entweder scheinen veraltet zu sein oder nicht enthalten eine Lösung.


Edit: Diese Spezifikationen auf meine Mitarbeiter Computer arbeiten, aber funktionieren nicht auf meine. Es sieht so aus, als ob der Unterschied damit zu tun hat, welche Reihenfolge RSpec::Rails::Mocha und RSpec::Rails::Mocks enthalten sind - RSpec::Rails::Mocha muss zuletzt eingefügt werden.

Ich habe eine Test-Spezifikation, dessen Ausgangs zeigt dies:

describe 'test' do 
    it 'test' do 
    m = self.method(:mock_model) 
    p m 
    p m.source_location 
    p self.class.included_modules.map(&:to_s).grep(/Moc/) 
    end 
end 

Auf dem Computer eines Kollegen (wo die Spezifikationen arbeiten), ist es diese Ausgabe erzeugt:

#<Method: RSpec::Core::ExampleGroup::Nested_1::Nested_1(RSpec::Rails::Mocha)#mock_model> 
["/Users/username/.rvm/gems/[email protected]/gems/rspec-rails-mocha-0.3.1/lib/rspec/rails/mocha.rb", 59] 
["RSpec::Rails::Mocha", "RSpec::Rails::Mocks", "RSpec::Core::MockFrameworkAdapter", "Mocha::API", "Mocha::ParameterMatchers", "Mocha::ObjectMethods"] 

Und auf meinem Computer (wo die Spezifikationen funktionieren nicht), es erzeugt diese Ausgabe:

#<Method: RSpec::Core::ExampleGroup::Nested_1::Nested_1(RSpec::Rails::Mocks)#mock_model> 
["/Users/username/.rvm/gems/[email protected]/gems/rspec-rails-2.9.0/lib/rspec/rails/mocks.rb", 67] 
["RSpec::Rails::Mocks", "RSpec::Rails::Mocha", "RSpec::Core::MockFrameworkAdapter", "Mocha::API", "Mocha::ParameterMatchers", "Mocha::ObjectMethods"] 

Antwort

0

Dies wird durch das Hinzufügen fixiert ist :require => false an die rspec-rails-mocha Linie in der Gemfile.

Verwandte Themen