如何应对情况,当类型得到虚拟方法而我需要提供一个Shim?
我有数据合同,代码为:
public class ServiceResponse
{
...
public virtual string Serialize() {...}
...
}
在我的代码中,可以调用response.Serialize()
,其中response
的类型为ServiceResponse
。
在我的单元测试中,我想做这样的事情:
ShimServiceResponse.Serialize = () => { return "serialized response"; };
虽然Serialize
方法是virtual
,但是ShimServiceResponse
类型不会提供Serialize
方法" Shimmed"。
解决这种情况的最佳方法是什么?感谢。
我正在使用Microsoft Fakes Framework,.NET 4.5.2和VS 2015。
答案 0 :(得分:0)
通过创建子class
并覆盖Serialize
方法来管理它。
class ServiceResponseChild : ServiceResponse
{
public override string Serialize()
{
return "orgUnitsResponse serialized";
}
}
在我的测试中,我正在使用这个孩子class
。
...
ServiceResponse response = new ServiceResponseChild();
target.SaveResponseAsXml(response);
...
虽然这对我有用,但对使用MS Fakes功能的其他解决方案感兴趣(如果可能的话)。