我有一个看起来像这样的课程:
module ReusableBitlyLinks
def shorten_url url, *args
ShortenedUrl.shorten_url_with_bitly( url, email.user )
end
end
我有一个看起来像这样的测试:
require File.expand_path("../../../../app/decorators/mixins/reusable_bitly_links", __FILE__)
include ReusableBitlyLinks
describe ReusableBitlyLinks do
describe "shorten_url" do
it "works" do
ReusableBitlyLinks.shorten_url('asdf').should == 'asdf'
end
end
end
当我运行测试时,我收到一条错误消息:
uninitialized constant ReusableBitlyLinks::ShortenedUrl
如何模拟存根ReusableBitlyLinks::ShortenedUrl
?
答案 0 :(得分:0)
ShortenedUrl
模块中是否定义了ReusableBitlyLinks
?如果不是 - 尝试使用::ShortenedUrl.shorten_url_with_bitly
访问它。
不确定什么存根与它有关...
答案 1 :(得分:0)
在mixin模块中,您需要通过预先ShortenedUrl
来告诉::
来自模块外部:
module ReusableBitlyLinks
def shorten_url(url, *args)
::ShortenedUrl.shorten_url_with_bitly(url, email.user)
end
end
您可能还需要在mixin文件中执行require
来加载定义ShortenedUrl
的任何文件。
此外,在您的测试文件中,行:
require File.expand_path("../../../../app/decorators/mixins/reusable_bitly_links", __FILE__)
可以简化为:
require_relative '../../../../app/decorators/mixins/reusable_bitly_links'