Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 依赖注入单元测试中的模拟_C#_Azure_Nunit_Ninject_Moq - Fatal编程技术网

C# 依赖注入单元测试中的模拟

C# 依赖注入单元测试中的模拟,c#,azure,nunit,ninject,moq,C#,Azure,Nunit,Ninject,Moq,我想知道使我的系统可测试的最佳方法 我不确定DI和mocking的最佳实践 如果DI是通过使用接口来实现的,那么我应该构建实现与实际类相同接口的模拟类吗 然后通过DI在我的测试中使用这些模拟类 我正在将数据导入HDInsight。数据取自azure队列 我想模拟/模拟队列和hdinsight,以便我的单元测试快速且解耦 我应该在测试中使用依赖项注入还是moq足够,它们应该独立运行?mock和依赖项注入齐头并进,因为如果没有依赖项注入,您将无法让您的类使用mock而不是真实的东西。您不需要的是依赖

我想知道使我的系统可测试的最佳方法

我不确定DI和mocking的最佳实践

如果DI是通过使用接口来实现的,那么我应该构建实现与实际类相同接口的模拟类吗

然后通过DI在我的测试中使用这些模拟类

我正在将数据导入HDInsight。数据取自azure队列

我想模拟/模拟队列和hdinsight,以便我的单元测试快速且解耦


我应该在测试中使用依赖项注入还是moq足够,它们应该独立运行?

mock
依赖项注入
齐头并进,因为如果没有依赖项注入,您将无法让您的类使用mock而不是真实的东西。您不需要的是
依赖项注入容器
(例如Ninject)。如果您愿意,您可以使用它,但是如果您做得正确,您应该能够通过自己提供所有依赖项来单元测试您的类。

mock
依赖项注入
齐头并进,因为如果没有依赖项注入,您将无法让您的类使用mock而不是真实的对象。您不需要的是
依赖项注入容器
(例如Ninject)。如果您愿意,您可以使用它,但是如果您做得正确,您应该能够通过自己提供所有依赖项来单元测试您的类。

Moq就足够了

您的测试使用模拟来帮助实现结果。它们快速且易于设置(一旦您习惯了所选的任何模拟库)

如果要使用DI框架。。你的工作量将增加三倍。您不仅可以手动删除模拟。。但是,您还需要为测试维护DI配置。这根本不适合任何工作流程。

Moq就足够了

您的测试使用模拟来帮助实现结果。它们快速且易于设置(一旦您习惯了所选的任何模拟库)


如果要使用DI框架。。你的工作量将增加三倍。您不仅可以手动删除模拟。。但是,您还需要为测试维护DI配置。这根本不适合任何工作流。

好的,但是如果我创建了一个带有出列和入列方法等的模拟队列类,然后在测试中显式地使用这个类,moq会给混合添加什么?感觉我在这里遗漏了什么。Moq可以帮助你更快地编写模拟。但是如果它们很复杂,并且无论如何都需要手工编写,那么可以省略Moq。好的,但是如果我创建了一个包含dequeue和enqueue方法等的模拟队列类,然后在测试中显式使用这个类,Moq会给混合添加什么?感觉我在这里遗漏了什么。Moq可以帮助你更快地编写模拟。但如果它们很复杂,而且无论如何都需要手写,你可以省去最小起订量。