RSpec NoMethodError:“主要对象的未定义方法`描述”

时间:2014-11-18 05:49:49

标签: ruby rspec

我正在努力学习Rspec。我在Eclipse中的ruby项目如下 -

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)

网上没有得到任何有用的答案。我该如何解决这个问题?

5 个答案:

答案 0 :(得分:32)

describe作为RSpec.describe的前缀替代,您可以添加

config.expose_dsl_globally = true

spec_helper.rb

答案 1 :(得分:24)

基本问题是基本对象main没有describe方法,除非你给它一个,这反映在错误消息“ undefined主对象的方法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

答案 2 :(得分:19)

您在describe前加RSpec,例如。 RSpec.describe因为听起来你正在使用RSpec的现代版本来禁用猴子修补。

答案 3 :(得分:17)

我同意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

答案 4 :(得分:0)

如果某人在几天前像我一样在几分钟前遭受了类似的脑部停电,并且确实使用:

ruby spec/yourspec.rb 

代替

rspec spec/yourspec.rb

完全惊呆了,为什么它在一分钟前就起作用了,而现在什么都没有改变,现在却不起作用-这正是弹出的错误。