如何验证模拟对象是"得到"?

时间:2016-09-01 14:39:40

标签: c# visual-studio unit-testing nunit moq

有没有办法断言我的嘲笑对象是"得到" ?

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);

有没有办法断言我的嘲笑对象是&#34;得到了&#34;吗

1 个答案:

答案 0 :(得分:2)

不,无法验证您的模拟对象是否已用作分配的一部分。 myValidation的赋值发生在Moq框架的范围之外,因此Moq不能进行任何拦截来跟踪它。

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

如果您必须知道您的模拟是否被访问,那么可以创建一个工厂类,其中包含获取验证字典的方法(类似GetValidation),然后传递一个模拟工厂到您的Car并验证工厂是否调用了GetValidation方法。