(apologies if you get 2 versions of this; My phone crashed as I was
composing a reply on train... :( )

Heya Sprios,

I'l give a shameless plug for LWP::UserAgent::Mockable.  This was originally
written for testing complex web services (and to get around the situation of
same being quite unreliable at-times).  The module has 2 modes, record and
playback.  In record mode, all LWP calls act as normal, but also have the
request and response serialised to a file (dictated by env vars).  In
playback mode, LWP calls are intercepted, and responses returned from file.

In the common case, the above is almost all that's required.  However, there
are a number of callbacks that can be specified to validate that the
expected request is received, or to allow modification of the response (ie,
if getting ids that are to be stored into a db, can modify the ids to avoid
unique key clashes).

There are a few restrictions on usage; Requests currently need to be done in
a predictable order, and it will not survive a fork (with normal usage, can
be gotten around by resetting the file/mode after fork).

If you do have a look at using the module, I'd appreciate any feedback you
have on it.  I've got a couple of ideas of additional things I want to do
with it, such as supporting additional storage backends, and possibly
replayable idempotent requests.

Take care,
Mark.

On 28 September 2010 15:25, Spiros Denaxas <s.dena...@gmail.com> wrote:

> Hello,
>
> I am venturing off to write a module which will act as a wrapper
> around an online API provided by a third party. I am trying to plan
> ahead of time how the tests for it will work.
>
> On the one hand, I am thinking that creating a test with the module
> that accesses the actual online service might be the most accurate way
> of testing things, on the other hand I am not sure if this is the
> "canonical" way of doing things.  I have done some reading around and
> some people suggested that instead of hitting the actual online source
> one should mock the output it returns tand take it from there. In the
> past, I have actually written tests to hit the live server but I am
> wondering if there's another way to this.
>
> Is there any standard way for this sort of thing?
>
> thank you for your help,
> Spiros
>
>

Reply via email to