我正在努力学习Rspec。我在Eclipse中的ruby项目如下 -
代码 -
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)
网上没有得到任何有用的答案。我该如何解决这个问题?
答案 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
完全惊呆了,为什么它在一分钟前就起作用了,而现在什么都没有改变,现在却不起作用-这正是弹出的错误。