如何使用Microsoft Fakes在不使用依赖注入的情况下隔离Web服务

时间:2014-03-24 19:14:01

标签: c# web-services microsoft-fakes isolation shim

我正在测试一个Web服务客户端,需要隔离对Web服务的调用。

我已经被告知我们不能使用依赖注入。如何隔离Web服务,以便我可以测试调用该服务的业务逻辑。由于我无法控制Web服务,因此我需要确保服务将返回的值。

我被告知使用Microsoft Fakes我可以做到这一点,但不知道如何定义假货。

我正在测试的代码的简化版本是:

var client = new Serviceprovider.ServiceProxies.PromoService.PromoServiceClient();
client.ClientCredentials.Windows.AllowedImpersonationLevel = client.Open();
Promo promoFromMaps = client.GetPromoById(exitingPm.NetworkId, true, true, true, exitingPm.MapsPromoId);

我想控制存储在promoFromMaps中的值,以便能够测试之后发生的业务逻辑。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

看起来您应该阅读以下有关此主题的Microsoft文档:https://msdn.microsoft.com/en-us/library/hh549175.aspx

您需要做的是右键单击Serviceprovider参考并选择添加假。这将在您的测试项目中创建一个名为Fakes的文件夹。之后整个DLL都是伪造的,您可以通过名称 ShimPromoService 使用伪造的 PromoService 。然后你可以设置这样的东西:

ShimPromoService.PromoServiceClient = () => new Client(); //Probably return a mock or something

这样你可以在PromoServiceClient方法中返回一个模拟(如使用Moq,NSubstitute等)。