3

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

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

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

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

到目前为止,我的尝试失败了,因为 RoleInstance 类似乎具有带有内部设置器的抽象属性,这阻止了我从 RoleInstance 派生类。这反过来又阻止了我为 RoleEnvironment.CurrentRoleInstance 提供 shim。

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

4

1 回答 1

1

不幸的是,我认为今天不可能用 Microsoft Fakes 来隔离此代码。通常,您希望填充 RoleEnvironment.CurrentRoleInstance 属性以返回一个存根 RoleInstance,该存根 RoleInstance 返回一个存根角色。我们可以填充 CurrentRoleInstance 属性。但正如您所指出的,RoleInstance 和 Role 都是具有内部构造函数的抽象类,我们无法使用当前版本的 Fakes 存根。

于 2012-10-19T20:44:58.287 回答