2
如何存根存取我有下面的类:使用RSpec
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
是没有得到存根。我做错了吗?我试图实现的所有功能都能够运行我的TwitterService#get_short_url_length
方法,而无需运行Twitter库,这会导致对Twitter的API请求导致失败。
我使用以下工具:
- 的Rails 3.2.12
- Rspec的2.13.0
- Twitter的4.6.2
任何帮助,不胜感激!
当设置了认证数据时,@ twitter.configuration是Twitter :: Configuration的一个实例。在Rails控制台中,如果我运行'Twitter.configuration',它实际上会直接使用Twitter进行身份验证。我认为这就是为什么我不能在其上存储方法的原因。我也无法将配置作为参数传递,因为它是Twitter模块的一部分。 – sudoash 2013-04-10 08:45:19