> So, does this look useful for folks? Is there anything you would change? 
> (It's trivial to assert plans for classes and the entire test suite rather 
> than rely on done_testing(), but I haven't done that yet).

I would welcome it as an option.

We use Test::Class now, but I have the sense that there's a better
alternative. We have started to load Moose in most cases, so there's no
additional load time penalty for Moose since it's already there.

Some things I like from some alternatives (from reviewing them, not
using them):

I like the declarative style and simple nesting of Test::Spec:

  https://metacpan.org/module/Test::Spec

describe "A User object" => sub {
  my $user;
  before sub {
    $user = User->new;
  };
  describe "from a web form" => sub {
    before sub {
      $user->init_from_tree({ username => "bbill", ... });
    };
    it "should read its attributes from the form";
    describe "when saving" => sub {
      it "should require a unique username";
      it "should require a password";
    };
  };
};

Test::Ika has a similar spirit, but with an option for very readable output:

describe 'MessageFilter' => sub {
    my $filter;

    before_each {
        $filter = MessageFilter->new();
    };

    it 'should detect message with NG word' => sub {
        my $filter = MessageFilter->new('foo');
        expect($filter->detect('hello foo'))->ok;
    };
    it 'should detect message with NG word' => sub {
        my $filter = MessageFilter->new('foo');
        expect($filter->detect('hello foo'))->ok;
    };
};

Check out the TAP-alternative output here:

https://metacpan.org/module/Test::Ika

This is a good idea that I expect to spread: Generating TAP for test
harnesses, but more a readable format when the target is a human reader.

However, I think if I just wanted to mash-up Test::Class and Moose, I
would do something more like this:

package Test::Class::Moose;
use Moose;
use MooseX::NonMoose;
extends 'Test::Class';

####

That way I would have to update our hundreds of test scripts to use a
new syntax. :)  If your project is to be considered a path forward from
Test::Class but with an incompatible syntax, it would be great if it
came with a script to find/replace the old syntax with the replacement.


   Mark

Reply via email to