web-dev-qa-db-ja.com

RSpec NoMethodError: "メインオブジェクトの未定義メソッド` describe '"

Rspecを学ぼうとしています。私のRuby Eclipseのプロジェクトは次のとおりです-

enter image description here

コード-

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)

オンラインで有用な回答を得られませんでした。この問題を修正するにはどうすればよいですか?

25
Borat Sagdiyev

根本的な問題は基本オブジェクトmaindescribeメソッドが指定されていない場合です。これはエラーメッセージ「undefined method describe for Main Object」。

率直に言って、私はこれを修正する2つの方法を考えることができます:

1)RSpec.describeただdescribeの代わりに

require 'rspec'
require './RubyOffRailsTuts/classes/furlong'

RSpec.describe Furlong do
end

2)include RSpecdescribemainで利用できるようにする

require 'rspec'
require './RubyOffRailsTuts/classes/furlong'

include RSpec

describe Furlong do
end
27
user513951

describeRSpec.describeとして前書きする代わりに、追加できます

config.expose_dsl_globally = true

spec_helper.rbに。

33
0xtobit

たとえば、describeの前にRSpecを付けます。 RSpec.describeモンキーパッチを無効にする最新バージョンのRSpecを使用しているように聞こえるからです。

20
sevenseacat

私は、あなたがモンキーパッチを無効にする最新バージョンの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

17
Tyler Collier