0

私の仕様の多くが失敗し、__ mock_proxy()に関するエラーメッセージが表示されます。

$ 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)>'

Rails3.1.4とRuby1.9.2を実行していて、次のgemを使用しています。

$ 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)

githubでのこれを含め、同じエラーが発生するという報告がいくつか見つかりましたが、それらはすべて古くなっているように見えるか、解決策が含まれていません。


編集:これらの仕様は私の同僚のコンピューターでは機能しますが、私のコンピューターでは機能しません。違いはどの順序に関係していてRSpec::Rails::Mocha、含まれているようRSpec::Rails::Mocksです-RSpec::Rails::Mocha最後に含まれている必要があります。

出力がこれを示すテスト仕様を作成しました:

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

私の同僚のコンピューター(仕様が機能する場所)では、次の出力が生成されました。

#<Method: RSpec::Core::ExampleGroup::Nested_1::Nested_1(RSpec::Rails::Mocha)#mock_model>
["/Users/username/.rvm/gems/ruby-1.9.2-p290-patched@development3/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"]

そして、私のコンピューター(仕様が機能しない場合)では、次の出力が生成されました。

#<Method: RSpec::Core::ExampleGroup::Nested_1::Nested_1(RSpec::Rails::Mocks)#mock_model>
["/Users/username/.rvm/gems/ruby-1.9.2-p290-patched@development3/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"]
4

1 に答える 1

0

これは、Gemfile:require => falseの行に追加することで修正されます。rspec-rails-mocha

于 2012-04-12T13:53:16.537 に答える