嘲讽的对象,而不会用C无参数的构造#/。NET [英] Mocking objects without no-argument constructor in C# / .NET

查看:144
本文介绍了嘲讽的对象,而不会用C无参数的构造#/。NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有可能建立从类的模拟不提供一个无参数的构造函数,不传递任何参数的构造?也许动态创建IL?

Is it possible to create a mock from a class that doesn't provide a no-argument constructor and don't pass any arguments to the constructor? Maybe with creating IL dynamically?

的背景是,我不想定义接口仅用于测试。解决方法是提供用于测试的无参数的构造。

The background is that I don't want to define interfaces only for testing. The workaround would be to provide a no-argument constructor for testing.

推荐答案

当然可以。在这个例子中我将使用起订量,一个真正真棒嘲弄库

Sure thing. In this example i'll use Moq, a really awesome mocking library.

例如:

public class MyObject
{
     public MyObject(object A, object B, object C)
     {
          // Assign your dependencies to whatever
     }
}

Mock<MyObject> mockObject = new Mock<MyObject>();
Mock<MyObject> mockObject = new Mock<MyObject>(null, null, null); // Pass Nulls to specific constructor arguments, or 0 if int, etc

在很多情况下,虽然,我分配模拟对象作为参数,所以我可以测试的依赖关系:

In many cases though, I assign Mock objects as the arguments so I can test the dependencies:

Mock<Something> x = new Mock<Something>();
MyObject mockObject = new MyObject(x.Object);

x.Setup(d => d.DoSomething()).Returns(new SomethingElse());

etc

这篇关于嘲讽的对象,而不会用C无参数的构造#/。NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆