我正在尝试使用Microsoft Fakes模拟Azure RoleEnvironment API。问题是我找不到一种方法来安排垫片/存根,以便我可以在单元测试中练习代码。
例如,假设我有以下代码:
using Microsoft.WindowsAzure.ServiceRuntime;
// ...
Role role = RoleEnvironment.CurrentRoleInstance.Role;
int count = role.Instances.Count;
我如何使用Fakes模拟上面的内容,以便我可以在单元测试中运行它?
到目前为止,我的尝试失败了,因为RoleInstance类似乎具有带有内部setter的抽象属性,这阻止了我从RoleInstance派生类。这反过来阻止我为RoleEnvironment.CurrentRoleInstance提供垫片。
顺便说一句,我完全清楚过分依赖假货会被认为是有害的。问题是,我已经有了RoleEnvironment的包装器,以及生产和测试实现。我试图模拟的代码是在我想要测试的生产实现中。答案 0 :(得分:1)
不幸的是,我不相信今天可以将此代码与Microsoft Fakes隔离。通常,您需要填充RoleEnvironment.CurrentRoleInstance属性以返回存根RoleInstance,该返回存根角色。我们可以填充CurrentRoleInstance属性。但正如您所指出的,RoleInstance和Role都是具有内部构造函数的抽象类,我们无法使用当前版本的Fakes来存根。