【发布时间】:2016-02-16 23:10:28
【问题描述】:
我无法通过调用 Reliable Service/Actor 的构造函数然后测试它的方法来测试它。 var testService = new SomeService(); 抛出 NullReferenceException。那么我可以用已部署的服务做什么..
我了解已部署的 SF Reliable Services/Actor 不是标准的 .NET 类,对已部署的 S/A 进行单元测试可能是一个奇怪的想法。
不管怎样,我现在正在尝试一下。
例如。我刚刚部署了一个服务,而不是在测试中我创建了一个代理对象并将项目添加到服务的输入队列中。然后我需要断言输入队列计数 = 1。如果我刚刚部署了一个服务并且没有其他客户端/服务/参与者使用它的输入队列,它就可以工作。但是下一次这个测试将失败,这就是问题所在。我需要让服务停止与其他消费者一起操作,放下它的队列,然后测试它。为此,我可以创建一些 TestMode 属性和 PropareoForTests/TestingCompleted 等方法,并在测试前后从测试客户端调用它们。
这样做是不是一个坏主意。也许有一些关于单元测试 SF 的指南?谢谢。
更新:
在调查 Service Fabric Web Reference Application example 时,我发现了这个 TODO 字符串:
/// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available.
这是否意味着顺丰服务将改进其 DI 支持?演员呢?
【问题讨论】:
-
构造函数依赖注入实际上现在可以在actor中使用!当您注册您的演员类型时,您还可以注册一个“工厂”,它实际上只是一个 Func,您可以在其中创建您的 Actor 类实例,它使您可以控制您的 Actor 的实例化,以便您可以通过那里注入依赖项。在服务中你已经可以做到这一点,看看我们在派对集群示例中是如何做到的:github.com/Azure-Samples/…
-
我写了一个关于用unity进行依赖注入的答案:stackoverflow.com/questions/30384780/…
-
@VaclavTurecek 您的链接已损坏
标签: c# web-services unit-testing azure azure-service-fabric