【发布时间】:2015-07-10 19:21:11
【问题描述】:
我正在测试一个 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 中的值,以便能够测试之后发生的业务逻辑。
感谢您的宝贵时间。
【问题讨论】:
-
看起来您需要填充 PromoServiceClient 所需的成员。类似于
ShimPromoServiceClient.GetPromoByIdInt32BooleanBooleanBooleanInt32 = () => new Promo()的东西,尽管你可能想在里面填充一些东西。我真的不知道您需要隔离哪些部分以及您正在测试哪些部分。我也会推后一点,因为即使这样可行,垫片自然是丑陋的代码。
标签: c# web-services microsoft-fakes isolation shim