通过隔离它所依赖的 Web 服务来对 c# .Net Web 服务进行单元测试
Unit Testing a c# .Net web service by isolating the web services it depends on
我必须对依赖于其他几个 Web 服务的 C# 项目进行单元测试。在进行单元测试时,我不想调用服务,而只是 return 一个虚拟值。我目前正在尝试使用垫片,但遇到了问题。当前代码为外部网络服务创建一个客户端,然后调用一个方法
CSSFormTransformationClient client = new CSSFormTransformationClient();
MemoryStream stream = client.TransformToPDF(cssRequest);
CSSFormTransformationClient 的定义由 SvcUtil.exe 工具生成,并具有如下方法 TransformToPDF
public System.IO.MemoryStream TransformToPDF(Mycompany.Enterprise.Reporting.ServiceReferences.CssTransformation.TransformRequest transformRequest)
{
return base.Channel.TransformToPDF(transformRequest);
}
现在我假设我可以通过以下方式使用 shim 来模拟 transformToPDF
的 return 值
ServiceReferences.CssTransformation.Fakes.ShimCSSFormTransformationClient.AllInstances.TransformToPDF = () => { }
但它不允许我。有人告诉我如何模拟 transformToPDF 方法?
谢谢。
P.S - 这个项目使用 WCF。
根据我的评论:尝试使用最小起订量 (Available on NuGet)。
using Moq;
using TransformRequest = Mycompany.Enterprise.Reporting.ServiceReferences.CssTransformation.TransformRequest;
private MemoryStream _toReturn;
public void SetupTest()
{
this._toReturn = new MemoryStream();
}
public void TearDownTest()
{
if (this._toReturn != null)
{
this._toReturn.Dispose();
}
}
public void YourTestMethod()
{
var client = new Mock<CSSFormTransformationClient>();
client.Setup(c => c.TransformToPDF(It.IsAny<TransformRequest>())
.Returns(this._toReturn);
MemoryStream stream = client.TransformToPDF(cssRequest); //Get cssRequest beforehand... I don't know where it came from.
//Continue with your test.
}
我必须对依赖于其他几个 Web 服务的 C# 项目进行单元测试。在进行单元测试时,我不想调用服务,而只是 return 一个虚拟值。我目前正在尝试使用垫片,但遇到了问题。当前代码为外部网络服务创建一个客户端,然后调用一个方法
CSSFormTransformationClient client = new CSSFormTransformationClient();
MemoryStream stream = client.TransformToPDF(cssRequest);
CSSFormTransformationClient 的定义由 SvcUtil.exe 工具生成,并具有如下方法 TransformToPDF
public System.IO.MemoryStream TransformToPDF(Mycompany.Enterprise.Reporting.ServiceReferences.CssTransformation.TransformRequest transformRequest)
{
return base.Channel.TransformToPDF(transformRequest);
}
现在我假设我可以通过以下方式使用 shim 来模拟 transformToPDF
的 return 值ServiceReferences.CssTransformation.Fakes.ShimCSSFormTransformationClient.AllInstances.TransformToPDF = () => { }
但它不允许我。有人告诉我如何模拟 transformToPDF 方法?
谢谢。
P.S - 这个项目使用 WCF。
根据我的评论:尝试使用最小起订量 (Available on NuGet)。
using Moq;
using TransformRequest = Mycompany.Enterprise.Reporting.ServiceReferences.CssTransformation.TransformRequest;
private MemoryStream _toReturn;
public void SetupTest()
{
this._toReturn = new MemoryStream();
}
public void TearDownTest()
{
if (this._toReturn != null)
{
this._toReturn.Dispose();
}
}
public void YourTestMethod()
{
var client = new Mock<CSSFormTransformationClient>();
client.Setup(c => c.TransformToPDF(It.IsAny<TransformRequest>())
.Returns(this._toReturn);
MemoryStream stream = client.TransformToPDF(cssRequest); //Get cssRequest beforehand... I don't know where it came from.
//Continue with your test.
}