[rspec-users] How to approach testing automated processing
zach.dennis at gmail.com
Sat Apr 18 19:26:27 EDT 2009
On Sat, Apr 18, 2009 at 7:02 PM, James Byrne <lists at ruby-forum.com> wrote:
> I have a requirement to fetch a data feed from our central bank and set
> a variety of currency exchange rates from that feed. My question is how
> does one approach behavioural driven design with autonomous automated
> processing? What I started with is this:
> Feature: Automatically Retrieve and Store Foreign Currency Exchange
> In order to accurately set foreign currency exchange rates daily
> The automated system
> Should automatically retrieve and store central bank exchange rates
> To Reduce Costs and Protect Revenue
> Scenario: Retrieve Exchange Rates from the Bank of Canada RSS feed
> Given an RSS feed
> When I access the RSS feed
> Then I should see "Bank of Canada: Noon Foreign Exchange Rates"
> And I should see today's date in "yyyy-mm-dd" format
> Now, while I have a pretty good idea how I am going to accomplish this,
> via cron and a standalone Ruby script, I am sort of perplexed about how
> I should construct the feature step definitions and how I would test
> this. I figure I just have to take as given that cron works because
> that is not my code. But how best to test that the rest works?
I would probably approach it this way.
- Make a local copy of the RSS feed you're expecting to import
- Write a feature which specifies the command you want to run. This
command would be the same command you used with cron. I would make it
take a path or URI as an argument.
- Have the feature ensure the the right number of records were created
based on your local copy of the feed
- Drop down to RSpec and re-use the local copy of the feed to ensure
that all of the little details (if you have little details) are
When that is done I would probably write a feature that actually hits
the Bank of Canada's site, and I would set this up to run on
continuous integration only. Maybe using Cucumber tags or a directory
structure, and a new rake task to help isolate CI only features from
Now when I run features locally I can be very very confident
everything works, and if CI fails one day because the Bank of Canada
changed their format, now you know you need to pull over a new copy of
the feed locally, and update your local features and specs.
That general approach has worked well in the past (and I say past
because before Cucumber existed I still wrote features/scenarios with
StoryRunner, and before that my team had tooled its own ad hoc story
> The automatic script will contain not much more than a list of the
> external libraries a call to a methods in class that I have named
> ForexCASource, loop through and map the returned array of hashes to the
> corresponding CurrencyExchangeRate attributes of a new row, call #save!
> and repeat until finished.
> How have others handled this sort of thing?
> Posted via http://www.ruby-forum.com/.
> rspec-users mailing list
> rspec-users at rubyforge.org
More information about the rspec-users