如何为在MOQ C#中使用对象实例调用的方法创建模拟?

时间:2019-01-03 12:46:26

标签: c# nunit moq

我为使用MOQ和NUnit进行测试的方法创建了Test。要测试的方法将是使用该相应类的对象的另一种方法。当我尝试模拟被调用的方法时,我无法调用模拟的方法。如何模拟此方法,因为我的测试方法正在使用其他所说的方法。请帮助我。

public DataSet ExecuteCondition()
{
  var ObjClass1 = new Class1();
  ....
  var result = ObjClass1.VerifyPrecondition(query);
  ....
}


public class Class1:IClass1
{
 public string VerifyPrecondition(string query)
 {
   ....
   return text;
 }
}

1 个答案:

答案 0 :(得分:1)

所以,我想这应该像这样:

具有ExecuteCondition()方法的类:

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
}