スタブ リターンまたはスタブ アクションが引数に依存する必要がある場合は、github でDo ハンドラーのいくつかの例を使用できます。
あなたの例について。
私の仮定は次のとおりです。次のような
いくつかのクラスCarMake
とインターフェイスがあります。IMetadataLogic
class CarMake
{
public string Id { get; set; }
}
interface IMetadataLogic
{
CarMake GetMake(string id);
}
そしてmetadataLogic
、
var metadataLogic = MockRepository.GenerateStub<IMetadataLogic>();
CarMake
指定されたインスタンスを返すスタブをセットアップする必要がある場合はId
、次のようにすることができます。
metadataLogic
.Stub(x => x.GetMake(Arg<string>.Is.Anything))
.Do((Func<string, CarMake>)(id => new CarMake { Id = id }));
残念ながら、デリゲートへの明示的なキャスト ラムダ式が必要です。
私の例のスタブはどの引数でも機能しますが、あなたの例のスタブはargs.Vehicle1.Make
と に対してのみ機能することに注意してくださいargs.Vehicle2.Make
。
PS
Stub をセットアップするだけでよい場合は、メソッドを使用する必要はありませんExpect()
。代わりに使用できますStub()
。