I know there are lot of questions in here around this. I've tried all of them but none of them works. Basically, I'm trying to stub TwitterOAuth::Client so my test won't call the real api every time.
Here's the bit from TwitterOAuth gem that I use. module TwitterOAuth class Client def initialize(options = {}) @consumer_key = options[:consumer_key] @consumer_secret = options[:consumer_secret] @token = options[:token] @secret = options[:secret] @proxy = options[:proxy] @debug = options[:debug] @api_version = options[:api_version] || '1' @api_host = options[:api_host] || 'api.twitter.com' @search_host = options[:search_host] || 'search.twitter.com' end ... def request_token(options={}) consumer(:secure => true).get_request_token(options) end end The request_token is the method I'm trying to stub. And this is what I've done in Sinatra which obviously doesn't work. before '/' do @twitterClient = TwitterOAuth::Client.new(some_params_in_hash) end get '/login' do token = @twitterClient.request_token(callback) # do some other checking end And here's my test it "should login with Twitter and save session" do TwitterOAuth::Client.any_instance.stubs(:request_token).with(callback).returns(fake_token) #it's still going to the real twitter api. end I've read from somewhere that ruby mixin can be overridden in anywhere. Clearly, I'm misunderstanding something. The alternative way is I could wrap the gem again with class and then stub from the class. Is that a good idea to do? Please help. -- Posted via http://www.ruby-forum.com/. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users