I am paginating a feed of a user and would like to mock the responses of the API I am using. The API can return strange results so I want to make sure that if the API returns items that I have already seen, stop paginating. I have used minitest to stub the first time the method get_next_page
is called but I would like to stub it the second and third time it is called with different values.
Should I just use rSpec? newbie to ruby ...
Here is the snippet
test "crawler does not paginate if no new items in next page" do
# 1: A, B
# 2: B, D => D
# 3: A => stop
crawler = CrawlJob.new
first_page = [
{"id"=> "item-A"},
{"id"=> "item-B"}
]
second_page = [
{"id"=> "item-B"},
{"id"=> "item-D"}
]
third_page = [{"id"=> "item-A"}]
# can only stub with same second page
# but I want to respond with third page
# the second time get_next_page is called
crawler.stub :get_next_page, second_page do
items, times_paginated = crawler.paginate_feed(first_page)
assert times_paginated == 3
end
end
I'm sure you have this figured out by now but ...
I had to use mocha a mocking framework to get this to work.
Then I was able to do this:
Object.any_instance.stubs(:get_value).returns('a','b').then.returns('c')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With