Mocking Azure RoleEnvironment API with Microsoft Fakes



我试图用Microsoft Fakes来模拟Azure RoleEnvironment API。问题是我找不到排列垫片/存根的方法,以便我可以在单元测试中练习代码。

例如,假设我有以下代码:

using Microsoft.WindowsAzure.ServiceRuntime;
// ...
Role role = RoleEnvironment.CurrentRoleInstance.Role;
int count = role.Instances.Count;

我将如何用 Fakes 模拟上述内容,以便我可以在单元测试中运行它?

到目前为止,我的尝试失败了,因为 RoleInstance 类似乎具有带有内部资源库的抽象属性,这使我无法从 RoleInstance 派生类。这反过来又阻止我为 RoleEnvironment.CurrentRoleInstance 提供填充程序。

顺便说一句,我完全意识到过分依赖假货会被认为是有害的。问题是,我已经有一个用于 RoleEnvironment 的包装器,以及生产和测试实现。我试图模拟的代码在我也想测试的生产实现中。

不幸的是,我不相信今天不可能用Microsoft Fakes隔离这段代码。通常,您需要填充 RoleEnvironment.CurrentRoleInstance 属性以返回一个存根 RoleInstance,该实例返回存根角色。我们可以填充 CurrentRoleInstance 属性。但正如你所指出的,RoleInstance 和 Role 都是带有内部构造函数的抽象类,我们不能用当前版本的 Fakes 存根。

最新更新