如何为在MOQ C#中使用对象实例调用的方法创建模拟?
我为正在使用MOQ&NUnit进行测试的方法创建了测试。要测试的方法将使用另一个使用相应类的对象的方法。当我试图模拟被调用的方法时,我无法调用被模拟的方法。如何模拟这种方法,因为我的测试方法使用的是另一种方法。请帮我做这个如何为在MOQ C#中使用对象实例调用的方法创建模拟?,c#,nunit,moq,C#,Nunit,Moq,我为正在使用MOQ&NUnit进行测试的方法创建了测试。要测试的方法将使用另一个使用相应类的对象的方法。当我试图模拟被调用的方法时,我无法调用被模拟的方法。如何模拟这种方法,因为我的测试方法使用的是另一种方法。请帮我做这个 public DataSet ExecuteCondition() { var ObjClass1 = new Class1(); .... var result = ObjClass1.VerifyPrecondition(query); .... }
public DataSet ExecuteCondition()
{
var ObjClass1 = new Class1();
....
var result = ObjClass1.VerifyPrecondition(query);
....
}
public class Class1:IClass1
{
public string VerifyPrecondition(string query)
{
....
return text;
}
}
所以,我想这应该是这样的: 使用ExecuteCondition()方法初始化: 测试:
[测试]
公开无效测试()
{
var mockClass1=新Mock();
mockClass1.Setup(x=>x.verifypremission(It.IsAny())。返回(“测试”);
var dataClass=新的数据类(mockClass1.Object);
dataClass.ExecuteCondition();
//断言
}
与实现问题的紧密耦合使单独模拟和测试变得困难。被测试的方法可以被导出到Class1
。大多数框架无法模拟类初始化,包括Moq。考虑显式依赖原理。谢谢,NKOSI。你能进一步解释一下显式依赖原则吗
public class DataClass
{
private readonly IClass1 _class1;
public DataClass(IClass1 class1)
{
_class1 = class1;
}
public DataSet ExecuteCondition()
{
//....
var result = _class1.VerifyPrecondition(query);
//....
}
}
[Test]
public void Test()
{
var mockClass1 = new Mock<IClass1>();
mockClass1.Setup(x => x.VerifyPrecondition(It.IsAny<string>())).Returns("test");
var dataClass = new DataClass(mockClass1.Object);
dataClass.ExecuteCondition();
//Assert
}