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?