2009-09-02 3 views
10

他のMooseオブジェクトに型制約のある属性として注入するMooseオブジェクトを偽装するときにPerlの人々が使用した戦略は?どうすればムースオブジェクトをモックできますか?

Test::MockObject::Extendsムースではうまくいかないようです。特定のパッケージとして祝福されるオブジェクトが必要ですが、バニラTest :: MockObjectは動作しません。私は他の人々も同様の難しさを持っていると確信しています。どのように解決しましたか?

CPAN上にすでに存在するソリューションのための追加ポイント。

+0

あなた自身の質問に答える方針が何であるか分かりませんが、私はCPAN上でTest::Mock::Classがうまく動作することが分かりました。だから私はここにコメントに載せています。 –

+0

hrmmm whoops:Test :: Mock :: Class http://search.cpan.org/~dexter/Test-Mock-Class-0.03/lib/Test/Mock/Class.pm –

+2

「あなたは*私のおばあちゃんはそれよりも優れた目的を作ることができます。 :-P –

答えて

5

私はそのようなことに関する専門家ではありませんが、私が見ていた最初のことはショームーア(Sartak)Test-MockOOです。

これがうまくいかない場合は、Metaobject Protocolとstarrtの機能を使ってMockオブジェクトを手動で構築する方法を見てみましょう。 Class :: MOP :: ClassとMoose :: Meta :: Classを参照して、特定のメソッドをオーバーライドする方法、および/または実行時にプログラム全体としてクラス全体を作成する方法について説明します。

これはまだあなたのために動作しない場合、私は過去のIRCを振ると尋ねます。ムースのヘビーな打者たちがそこに遊び、私はそのうちの1人がこの状況に遭ったと確信しています。

+3

もしそのモジュールが既にCPAN上にあったら、チェックマークを付けてください。それは仕事をするように見えます。 –

1

ビットの自己プラグですが、私はhttp://search.cpan.org/~cycles/Test-Magpie-0.05/lib/Test/Magpie.pmと書いていますが、これは役に立つかもしれません。これで作成されたモックは、どのようなクラスとしても機能し、すべての役割を可能にします。特定のオブジェクトやクラスをまったく模倣しません。悲しいことに、CPANの検索はちょっとゴミなので、「テストモック」を検索しても検索結果には表示されません。

私はまた、ドキュメントはモチベーションやサンプルコードの膨大な量が含まれていないことを言及する必要がありますので、あなたは、テストのいくつかの確認したいことがあります。

関連する問題