如何验证模拟对象已“获得”

本文关键字:对象 获得 模拟 何验证 验证 | 更新日期: 2023-09-27 18:05:06

是否有一种方法来断言我的模拟对象是"得到" ?

public class Car
{
    private readonly IValidationDict _validationDict;
    public Car(IValidationDict validationDict)
    {
        _validationDict = validationDict;
    }
    public void Go()
    {
       var myValidation = _validationDict;   //I would like to assert that _validationDict was indeed assigned to another variable or "gotten"
    }
}

在我的单元测试中,我会有这样的内容:

var mock = new Mock<IValidationDict>();
var sut = new Car(IValidationDict.Object);

是否有一种方法来断言我的模拟对象是"得到"?

如何验证模拟对象已“获得”

不,没有办法验证您的模拟对象是否被用作赋值的一部分。myValidation的赋值发生在Moq框架的边界之外,因此Moq无法进行任何拦截来跟踪它。

作为@Lee状态,假设myValidation在其他地方使用,并且可以检查该变量(将是模拟实例)的使用。

如果您必须知道您的模拟是否被访问,那么另一种选择是创建一个工厂类,该工厂类具有获取验证字典的方法(类似于GetValidation),然后将模拟工厂传递给Car,并验证在工厂上调用了GetValidation方法。