1
私はリファクタリングの最中にあるレガシーシステムを持っています。Generate()メソッドの代理パラメータに対してMoqに何を供給しますか?
public class SUT
{
public delegate SaveStuff(SomeObject obj);
public void Generate(SaveStuff saver)
{
// Do stuff
var obj = new SomeObject();
saver(obj);
}
}
私は部品番号を使用して非常に新たなんだ、と呼ばれる時代「セーバー」の数をカウントします:次のように
私は、実質的にオブジェクトを持っています。
私はSOに、ここで例の数を見てきましたが、どのようにセットアップ行く何テスト
[Test]
public void TestDelegateCall()
{
var sut = new SUT();
// Prepare SUT's State...
var callCount = 0;
sut.Generate(??);
Assert.AreEqual(callCount,2);
}
をするに困惑しています?ありますか?
私はちょうどそのすることができます、私はあなただけで次の操作を行うと、匿名メソッドとクロージャの利点を取ることができると信じて:)var callCount = 0
sut.Generate(obj=>callCount++);
問題が解決しない場合、あなたはここにMOQを使用する必要があることを知らない
私はそれをコンパイルすることができませんでしたが、それは私が行く必要がある私を得た。 'SaveStuff actionCount =デリゲート(SomeObject obj){callCount ++; }; '働いた。正しい方向に私を指してくれてありがとう。 –
甘い!あなたの単純な例に変更した後、R#は 'sut.Generate(obj => {callCount ++;});'にもっと洗練された助けとなり、別の問題を解決するのに役立ちました。あなたは私の理解を大幅に向上させました。ありがとうございました! –
私は自分の答えが更新されているので、匿名の方法で作業する必要があります。しかし、古い代理人のアプローチを使用するようにコードを更新しました。私は両方をテストし、どちらもうまくいくはずです。あなたはあなたの最後のコメントから括弧を必要としません:) –