如何在Ruby rspec中调用模块?
lib/rspec/core/my_methods.rb如何在Ruby rspec中调用模块?,ruby,selenium,rspec,Ruby,Selenium,Rspec,lib/rspec/core/my_methods.rb module MyLovelyModule class My_methods def my_lovely_method save_world config.to_prepare do Dir.glob(Rails.root + "../simpleRspec/dummy_classes.rb").each do |c| require_dependency(c) end
module MyLovelyModule
class My_methods
def my_lovely_method
save_world
config.to_prepare do
Dir.glob(Rails.root + "../simpleRspec/dummy_classes.rb").each do |c|
require_dependency(c)
end
end
end
end
end
lib/simpleRspec/dummy_classes.rb
describe MyLovelyModule do
class DummyClasses
before(:all) do
@dummy = DummyClasses.new
@dummy.extend MyLovelyModule
end
describe "MyLovelyModule" do
it "saves the world" do
expect {
@dummy.my_lovely_method
}.to raise_error MeltDownException
end
end
end
end
我犯了这样一个错误:-
C:/Users/afzala/RubymineProjects/simpleRspec/lib/simpleRspec/dummy_classes.rb:2:in`':未初始化常量MyLovelyModule(NameError)
from-e:1:in“load”
from-e:1:in`'
进程已完成,退出代码为1
有人能帮我解决这个问题吗?你需要先加载你的模块。在定义测试之前,还需要关闭类:
require 'lib/rspec/core/my_methods.rb'
describe MyLovelyModule do
class DummyClasses
end
before(:all) do
@dummy = DummyClasses.new
@dummy.extend MyLovelyModule
end
describe "MyLovelyModule" do
it "saves the world" do
expect {
@dummy.my_lovely_method
}.to raise_error MeltDownException
end
end
end
此外,您将无法在测试中访问
@dummy
。您需要在(:each)之前使用来代替(:all)
您有spec\u helper.rb文件吗?你也能给我看看吗?是rails应用程序吗?我收到这个错误加载错误。。。。C:/Users/afzala/RubymineProjects/simpleRspec/lib/simpleRspec/dummy_classes.rb:1:inrequire”:无法加载这样的文件--lib/rspec/core/my_methods.rb(LoadError)from C:/Users/afzala/RubymineProjects/simpleRspec/lib/simpleRspec/dummy_classes.rb:1:in
“from-e:1:in加载”from-e:1:in
“过程预期结束,退出代码为1”。是rails应用程序吗?加载路径中有什么?为什么要将应用程序模块存储在名为“rspec”的文件夹中?不,这是一个gem应用程序,您没有spec\u helper.rb
文件吗?是的,在我的spec\u helper.rb中,它甚至在rspec.configure do | config | config.before(:each){print('before method')}config.before(:each)do end config.after(:each)do end config.before(:all)do end config.before)之前在(:all)do config.after(:suite)do config.before(:suite)do end config.after(:suite)do end end