[rspec-users] simple == with prettier error messages + good documentation
nick at deadorange.com
Thu Jan 29 15:38:03 EST 2009
On 29/01/2009, at 2:18 PM, David Chelimsky wrote:
> On Thu, Jan 29, 2009 at 1:02 PM, aslak hellesoy <aslak.hellesoy at gmail.com
> > wrote:
> On Thu, Jan 29, 2009 at 7:25 PM, David Chelimsky
> <dchelimsky at gmail.com> wrote:
> > On Thu, Jan 29, 2009 at 12:00 PM, <r_j_h_box-sf at yahoo.com> wrote:
> >> Hi all,
> >> I've found myself writing a thing I think is less than optimal,
> >> for suggestions. The context is, I'm testing a result, and as a
> part of
> >> that test, I might verify two or three things, which are
> >> relevant but not really discrete results (?).
> >> Here's my thinking process, using a toy example:
> >> foo.should == bar (or foo.should_not be_nil)
> >> > expected not to be nil, but was
> >> (hm, not very informative)
> >> if( foo == nil )
> >> "failure to setup foo".should == "foo should be set to the
> thing that
> >> will be rendered"
> >> end
> >> > expected "foo should be set to the thing that will be rendered",
> >> > got "failure to setup foo" (using ==)
> >> I've used this, by example, for a test on a dependency
> >> where if the dependency isn't found, I show a decent message with
> info the
> >> tester can use to resolve it. And, as I mentioned, I've used it
> >> revealing more details in cases where the it "" + the generic
> error aren't
> >> informative.
> >> I'm satisfied using this method for things like detecting a
> failure to use
> >> a test-helper correctly - works fine, doesn't get in my way as
> part of the
> >> documentation. Which brings me to the problem I'm concerned about:
> >> With this method, nothing come out in the generated spec-docs to
> >> the thing I'm conditionally requiring.
> >> I guess I could get more fine-grained with my it()'s, but I've been
> >> preferring a more general statement for it(), that gives the
> sense without
> >> the detail.
> >> Any suggestions?
> > I can't think of anything that wouldn't result in something that
> > more writing as of now. Maybe we need a new construct like:
> > it "does something" do
> > with_message "this is a more specific message" do
> > foo.should == bar
> > end
> > end
> > WDYT?
> I think that would be useful. Maybe make it more explicit that it's an
> error message:
> on_error "bla" do
> on_failure "..." do ????
I like "on_failure", as it's consistent with RSpec's output. Eg:
31 examples, 0 failures
What could be done to make the construct more sentence-like? If used
in this manner:
it 'should do something' do
on_failure "@foo is nil" do
It reads like this to me:
If "@foo is nil" fails, execute the block.
These are a bit verbose, but what do you think these approaches?:
More information about the rspec-users