我正在尝试使用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的包装,以及生产和测试的实现。我尝试模拟的代码在生产实现中,我也想对其进行测试。

最佳答案

不幸的是,我不认为现在可以使用Microsoft Fakes隔离此代码。通常,您希望对RoleEnvironment.CurrentRoleInstance属性进行填充以返回存根RoleInstance,该存根RoleInstance返回存根Role。我们可以填充CurrentRoleInstance属性。但是正如您所指出的那样,RoleInstance和Role都是带有内部构造函数的抽象类,我们不能在其当前版本的Fakes中进行存根。

关于azure - 模拟Microsoft假冒Azure RoleEnvironment API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12542539/

10-10 11:35