我必须单元测试C#项目,它依赖于其他几个Web服务。虽然单元测试我不想调用服务,但只是返回一个虚拟值。我正在尝试使用垫片,但我面临的问题。当前代码创建针对外部web服务的客户端,然后调用一个方法单元测试一个c#.Net网络服务通过隔离它依赖的网络服务
CSSFormTransformationClient client = new CSSFormTransformationClient();
MemoryStream stream = client.TransformToPDF(cssRequest);
由svcutil.exe的工具生成的CSSFormTransformationClient的定义和有一个方法TransformToPDF如下
public System.IO.MemoryStream TransformToPDF(Mycompany.Enterprise.Reporting.ServiceReferences.CssTransformation.TransformRequest transformRequest)
{
return base.Channel.TransformToPDF(transformRequest);
}
现在我假设我可以用以下方式使用匀场来模拟transformToPDF的返回值
ServiceReferences.CssTransformation.Fakes.ShimCSSFormTransformationClient.AllInstances.TransformToPDF =() => { }
但是它不允许我。有人告诉我如何模拟transformToPDF方法?
感谢。
P.S - 该项目使用WCF。
我已经添加了假装配和一切..只是错过了正确的方式去做这个.. –
你可以定义“不让我”?你是否收到错误或其他消息?究竟是什么问题?另外,你有没有尝试Moq? – Brandon
@Brandon _ServiceReferences.CssTransformation.Fakes.ShimCSSFormTransformationClient.AllInstances_ 之后它只给了我两个选项“等于”和“引用等于”。如果我做了其他事情,VS强调它是红色的。我没有尝试过模拟。鉴于moq在这种服务隔离中的一般描述和一般适合性,是否会暗示垫片? –