嘲讽的对象,而不会用C无参数的构造#/。NET [英] Mocking objects without no-argument constructor in C# / .NET
本文介绍了嘲讽的对象,而不会用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屋!
查看全文