Ответ 1
Альтернатива предвзаимодействию describe
как RSpec.describe
, вы можете добавить
config.expose_dsl_globally = true
на ваш spec_helper.rb
.
Я пытаюсь изучить Rspec. Мой рубиновый проект в 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)
Не получил полезных ответов в Интернете. Как исправить эту проблему?
Альтернатива предвзаимодействию describe
как RSpec.describe
, вы можете добавить
config.expose_dsl_globally = true
на ваш spec_helper.rb
.
Основная проблема: базовый 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
Префикс describe
с RSpec
, например. RSpec.describe
, потому что звучит так, будто вы используете современную версию RSpec, которая отключает патч обезьяны.
Я согласен с 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
.