我有以下课程:
class TwitterService
def initialize
@twitter ||= Twitter
end
def get_short_url_length
@twitter.configuration.short_url_length
end
end
以下规格:
describe TwitterService do
before(:each) do
Twitter::Configuration.any_instance.stub(:short_url_length).and_return(12)
end
it 'does not send short_url_length request to Twitter' do
twitter = TwitterService.new
twitter.get_short_url_length.should == 12
end
end
我遇到的问题是#short_url_length
上的Twitter::Configuration
没有被删除。我做错了吗?我想要实现的只是能够在不运行Twitter库的情况下运行我的TwitterService#get_short_url_length
方法,这会导致对Twitter的API的请求导致失败。
我正在使用以下工具:
非常感谢任何帮助!
答案 0 :(得分:0)
在您的实施中,您确认@ twitter.configuration实际上是Twitter :: Configuration的实例吗?
无论如何,我认为更好的方法是在你的代码中注入一个配置,即
def initialize(config = Twitter::Configuration)
@twitter ||= config
end
这可以是测试双(模拟或存根),或者如果没有指定则使用实际服务。