3

で構築されたテスト スイートをリファクタリングしています。基本テスト クラスと一部のテスト クラスの両方で、RolesなどのMooseの優れたTest::Class点を利用したいと考えています。

私が試してみました:

  • MooseX::NonMoose基本テストクラスでの使用
  • MooseX::InsideOut基底クラスでの使用
  • 設定make_immutable( inline_constructor => 0 );

私はこれらのMooseXモジュールのいずれも使用したことがなく、正しく使用したかどうか確信が持てません。すべての試行で、テスト スイートの実行時に次のエラーを受け取りました。

Test::Class の内部構造が混乱しているようです。サブクラスまたは多重継承で new() をオーバーライドしましたか?

この失敗を引き起こす単純なサンプル:

基本テスト クラス:

package My::Test::Class::Base;

use Moose;
use Test::Class::Most;

1;

テストクラス:

package Test::Package::Class;

use Moose;
use Test::Class::Most parent => 'My::Test::Class::Base';

sub blah : Tests() {
    my $test = shift;
    can_ok($test->class(), 'blah');
}

1;

テスト中のクラス:

package Package::Class;

use Moose;

sub blah {
    my $self = shift;
    return 1;
}

1;

それで、私は何を間違っていますか?

4

1 に答える 1

2

ここでの問題は、Test::Class が new() コンストラクターをオーバーライドすることを望んでいないことですが、Moose はそれを行っています。人々はこれに対処する方法を私に尋ね続けているので、最近Test::Class::Mooseを書きました。アルファ版なので現在は Github でのみ公開されていますが、かなり妥当なようです。Test::Class::Mostと同様に、一般的なテスト関数が提供されていることに注意してください。

試してみたら、私に知らせてフィードバックを提供してください。人々が何を望んでいるのかをよりよく知ることができます.

CPAN で何かが必要な場合は、いくつかの代替手段があります。

MooseX::Declareを使用します。多くの人はそれが好きではありません。

構文が直観的ではないかもしれませんが、優れたモジュールのように思えます。

Test::Routine と同じ問題。

于 2012-12-28T11:24:05.687 に答える