Sunday, June 9, 2013

[Rails] Minitest mock or stub methods

Hi

I'm building a small library to use in my Rails app which interacts with a 3rd party API. It fetches artists and tracks.

So I have:
lib/my_lib.rb
lib/my_lib/artist.rb
lib/my_lib/track.rb

To get an artist I do
artist = MyLib::Artist.find("Oasis")
Which returns an instance of Artist if it finds (via 3rd party API) it or nil otherwise.

Then I can call artist.tracks which fetches all available tracks at the 3rd party and returns them as an array.

In my artist class I have a separate method that makes the actual API calls and parses the XML response with Nokogiri

def self.find(name: nil)
  # Stuff...
  doc = get_data(some_url)
  # More stuff...
end

def get_data(req_url)
  Nokogiri::XML(open(req_url))
end

When writing my tests I don't want to hit the actual URL but instead load an XML file from disk.

I'm using Minitest which has a mocking library, but how do I actually mock (or is it more appropriate to stub?) the method?

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/a2e63640-ac9a-4114-a949-7a8caaab7468%40googlegroups.com?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate