4

我正在测试一个 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 中的值,以便能够测试之后发生的业务逻辑。

谢谢你的时间。

4

1 回答 1

0

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

您需要做的是右键单击 Serviceprovider 引用并选择Add Fake。这将在您的测试项目中创建一个名为 Fakes 的文件夹。之后,整个 DLL 被伪造,您可以通过名称ShimPromoService使用伪造的PromoService。然后,您可以进行如下设置:

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

这样,如果您想(使用 Moq、NSubstitute 等)从 PromoServiceClient 方法返回一个模拟。

于 2015-07-10T11:21:11.750 回答