は私が何をしようとしているのは非常に単純化した例である具象クラスにメソッド呼び出しを確認する:私のテストで部品番号 - ここ
public class Bar
{
public void SomeMethod(string param)
{
//whatever
}
}
public interface IBarRepository
{
List<Bar> GetBarsFromStore();
}
public class FooService
{
private readonly IBarRepository _barRepository;
public FooService(IBarRepository barRepository)
{
_barRepository = barRepository;
}
public List<Bar> GetBars()
{
var bars = _barRepository.GetBarsFromStore();
foreach (var bar in bars)
{
bar.SomeMethod("someValue");
}
return bars;
}
}
、私はで定義された具体的なリストを返すようにIBarRepositoryをからかっていますユニットテストを行い、その模擬リポジトリインスタンスをFooServiceコンストラクタに渡します。
FooServiceメソッドGetBarsで、SomeMethodがリポジトリから返された各Barsに対して呼び出されたことを確認したいと考えています。私はMoqを使用しています。返されたバーのリストを嘲笑せずに(もし可能であれば)、Bar(yuck)にいくつかのハッキーフラッグを置かなくても、これを行う方法はありますか?
私はDDD帳から例を以下だが、私は、私は実装をテストに挑戦していますので、それが臭いと思うし始めているが....
改訂
感謝を!私はバーを嘲笑する過程にあった。私はあなたがMoqでそれを行うことができてうれしいです。 – drogon
助けてくれたらうれしいです。そして、具体的なクラスがパラメータのないコンストラクタを持っている限り、具体的なクラスの任意の仮想メソッド/プロパティをモックすることができます(Moqは例外をスローします) –