我有这个设置
module A do
module B do
def foo
end
end
在rspec内部,我正在尝试测试foo。
我的rspec文件是这样的
describe A::B do
describe "#foo" do
A::B.foo ...
end
end
我收到错误NoMethodError:A :: B:Module的未定义方法foo
有任何想法吗?
首先,module A do
语法似乎是错误的-不应有一个do
单词。第二件事是您尝试在模块上调用foo方法A::B
(没有在class上定义的类方法A::B
-foo是实例方法)。您的代码应如下所示:
module A
module B
def self.foo
end
end
end
*(在这种情况下,您可以致电A::B.foo
)
或者,如果要使用foo作为实例方法,请执行以下操作:
module A
module B
def foo
end
end
end
在这种情况下,您不能调用A::B.foo
,但是可以创建一个类,其中可以包括A::B
模块:
class Test
include A::B
end
现在您可以调用Test.new.foo
关于rspec测试:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句