Wednesday 9th May, 2018
Show and Tell 39
Tom S and Ben G joined James and I for our 39th Show & Tell in Dec 2017.
RSpec’s Verifying Doubles
Tom explained how he updated the FutureLearn tests to use RSpec’s Verifying Doubles after a recent upgrade to RSpec 3. Verifying Doubles are similar to standard doubles but with the added benefit of verifying that the stubbed methods exist on the object they’re being stubbed on.
Tom’s using the
instance_double('Foo') syntax (as opposed to
instance_double(Foo)) which toggles verification based on whether the
Foo constant is defined. This allows the tests to run quickly in isolation but with the added benefit of verification when run in the context of the application (i.e. when all the dependencies are loaded).
Tom’s ended up disabling verification in their Rails view specs. There were a number of tests that he couldn’t get to work with double verification. He initially disabled verification for those tests (using
without_partial_double_verification) but decided that the cost of having to think about when to disable it didn’t justify the benefit of having it enabled.
Shortly after merging the changes to master they caught a problem that would’ve otherwise probably made it to production. A column was renamed in a migration which broke some code making use of
find_by method was being stubbed in a test which would’ve continued to pass had the double verification not complained about the unknown method.
The discussion reminded James M of OO-Matron by Nat Pryce, although I’m afraid I no longer recall what the similarities were.
Ben spoke about an alternative way of teaching people about 3D modelling. Unfortunately, because the event was 6 months ago and because of my lack of subject knowledge, my notes no longer make any sense to me and so I’m not going to be able to do this any justice. Sorry, Ben!
If you have any feedback on this article, please get in touch!
Historical comments can be found here.