I recently came across FakeFS, which sounds like a great idea for helping to test file functions. However, I did pick up on the following off the website:
[...] it means replacing our mkdir call with a call to mkdir_p won’t break our tests. Because, really, it shouldn’t.
Now I understand that in the context of the example given, mkdir and mkdir_p should do the same thing. But mkdir and mkdir_p do perform different operations, and the tests should break if mkdir_p is changed to mkdir. If you change mkdir_p to mkdir and your passing tests don’t fail then your tests aren’t correct.
I recently found squirrel, and I wanted to use it for a project we’re working on to simplify some complex finder statements. Squirrel allows turning something like this:
Task.find(:all,
:conditions => ['active = ? and (updated_at > cache_version or cache_version IS NULL)', true])
into:
Task.find(:all)do
active == true
any do
updated_at > cache_version
cache_version.nil?
endend
The problem is testing
Then I ran into a serious problem – how to test this piece of code using rspec? Here was my first attempt: (more…)