[rspec-users] SOAP / VCR / General Advice

Michael Guterl mguterl at gmail.com
Wed Apr 11 13:08:07 UTC 2012

I'm building a ruby wrapper for a SOAP service using savon and I'm
running into some issues with testing and I would love some feedback.
I have added some tests with the help of VCR, but unfortunately that
doesn't feel right given some of the constraints I'm running into.

1. The service provides no test mode or environment.
2. Putting the service into a known state is difficult because some
objects are soft deleted. Attempting to save an object with the same
unique identifier as a soft deleted object is a unique constraint
violation.  In order to test saving a new object in the system, an
actual new object will need to be created in our production
environment every time.
3. It is hard to simulate certain conditions because of #2.  Other
conditions like session timeouts are also difficult to simulate,
because it requires actually sleeping in my spec.  Sleeping in the
spec is only necessary when not using VCR cassettes, once they are in
place the sleep is no longer needed.
4. In the past when using VCR, I would be able to clear my
spec/cassettes directory, run the tests again, and refresh what was
there.  Because of #2 this isn't possible for any tests that persist
new objects using the service.

The only thing I can come up with is building a clone of the service
using sinatra and provide a subset of the functionality I need for
testing.  I'm fairly certain this will allow me to get around all of
the constraints I mentioned and allow me to stub out specific requests
to simulate different conditions.

Any feedback is greatly appreciated.

Michael Guterl

More information about the rspec-users mailing list