我测试我的课在嘲笑对象通过验证设置
public class myclass
{
private IAwesome awesomeObject;
public myclass(IAwesome awesomeObject)
{
this.awesomeObject = awesomeObject;
}
public void MethodUnderTest()
{
this.awesomeObject.RunSomething(); //I want to verify that RunSomething was called
}
}
我这样做的方法是:
//Arrange
var mockAwesome = new Mock<IAwesome>();
mockAwesome.Setup(x=>x.RunSomething()).Returns ... Verify()...;
//Act
var sut = new myclass(mockAwesome.object);
sut.MethodUnderTest();
//Assert
mockAwesome.Verify();
我得到的例外是:
System.NotSupportedException:表达式引用 不属于模拟对象的方法:x => x.RunSomething
难道不可能测试一个特定的方法是在我传入一个类的模拟对象上执行的,它现在是该类的私有成员的一部分吗?
将设置行修改为'mockAwesome.Setup(x => x.RunSomething())。Verifiable()',它应该适用于您提供的示例。要确认,请在示例类中注释掉'this.awesomeObject.RunSomething()'并运行测试。它会失败,因为你将'RunSomething'设置为'Verifiable()'并且它没有被使用。 – Nkosi