Rspecを学ぼうとしています。私のRuby Eclipseのプロジェクトは次のとおりです-
コード-
require 'rspec'
require './RubyOffRailsTuts/classes/furlong'
describe Furlong do
end
エラー-
/RubyOffRailsTuts/specs/furlong_spec.rb:6:in `<main>': undefined
method `describe' for main:Object (NoMethodError)
オンラインで有用な回答を得られませんでした。この問題を修正するにはどうすればよいですか?
根本的な問題は基本オブジェクトmain
にdescribe
メソッドが指定されていない場合です。これはエラーメッセージ「undefined method describe
for Main Object」。
率直に言って、私はこれを修正する2つの方法を考えることができます:
1)RSpec.describe
ただdescribe
の代わりに
require 'rspec'
require './RubyOffRailsTuts/classes/furlong'
RSpec.describe Furlong do
end
2)include RSpec
describe
がmain
で利用できるようにする
require 'rspec'
require './RubyOffRailsTuts/classes/furlong'
include RSpec
describe Furlong do
end
describe
をRSpec.describe
として前書きする代わりに、追加できます
config.expose_dsl_globally = true
spec_helper.rb
に。
たとえば、describe
の前にRSpec
を付けます。 RSpec.describe
モンキーパッチを無効にする最新バージョンのRSpecを使用しているように聞こえるからです。
私は、あなたがモンキーパッチを無効にする最新バージョンのRSpecを使用している可能性が高いということで、sevenseacatに同意します。
この無効化は、spec_helper.rb
ファイルは次のようなことをすると作成されます
$ Rails generate rspec:install
spec_helper.rb
、次のようなセクションが表示されます。
# Limits the available syntax to the non-monkey patched syntax that is
# recommended. For more details, see:
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
# - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
config.disable_monkey_patching!
最後の行をコメントアウトできます。
ただし、推奨されるアプローチは、モンキーパッチを使用せず、RSpec.describe
。