This post originated from an RSS feed registered with Ruby Buzz
by Jay Fields.
Original Post: Ruby: Creating Custom Assertions
Feed Title: Jay Fields Thoughts
Feed URL: http://blog.jayfields.com/rss.xml
Feed Description: Thoughts on Software Development
I've previously written about creating custom assertions for delegation and Validatable validations. Both solutions followed the same pattern, which is very similar to the example below.
Model.verify do fluent.interface fluent.interface ... end
I do like the readability provided by the pattern; however, it isn't a practical solution.
My colleague and friend, John Hume, also created a solution for testing delegation: Handoff. The thing I really like about Handoff is that it follows the traditional test definition pattern.
deftest_description assert_handoff.... end
At first glance this might not seem like a big deal; however, following the traditional pattern is crucial when you want to run a test in isolation.
A large problem with my delegation custom assertion is that you must run all the tests in a file if you want the delegation tests to run. It's possible to create ways to run the individual lines; however, with each custom assertion a new way to run it in isolation must be devised. A far simpler solution is to stick to the common test definition pattern and leverage existing tools that know how to run one test at a time.
The next release of Validatable will include custom assertions that follow the traditional test definition pattern.