Подтвердить что ты не робот

RSpec NoMethodError: "undefined метод` описать 'для основного объекта"

Я пытаюсь изучить Rspec. Мой рубиновый проект в 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)

Не получил полезных ответов в Интернете. Как исправить эту проблему?

4b9b3361

Ответ 1

Альтернатива предвзаимодействию describe как RSpec.describe, вы можете добавить

config.expose_dsl_globally = true

на ваш spec_helper.rb.

Ответ 2

Основная проблема: базовый Object main не имеет метода describe, если вы не указали его, что отражается в сообщении об ошибке undefined method describe для главный объект ".

Оффлайн, я могу придумать два способа исправить это:

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

Ответ 3

Префикс describe с RSpec, например. RSpec.describe, потому что звучит так, будто вы используете современную версию RSpec, которая отключает патч обезьяны.

Ответ 4

Я согласен с sevenseacat, что вы, вероятно, используете современную версию RSpec, которая отключает патч обезьян.

Это отключение выполняется по умолчанию, когда файл 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.