当存根返回或存根操作应取决于参数时,您可以在 github 上使用Do handler few examples
关于你的例子。
我的假设是:
有一些类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 }));
不幸的是,需要显式转换 lambda 表达式来委托。
请注意,我的示例中的存根适用于任何参数,但您的示例中的存根仅适用于args.Vehicle1.Make
和 for args.Vehicle2.Make
。
PS
如果您只需要设置存根,则不需要使用Expect()
方法。你可以Stub()
改用。