如何验证模拟对象是 "gotten"?
How to verify that mock object was "gotten"?
有没有办法断言我的模拟对象是 "gotten"?
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);
有没有办法断言我的模拟对象是 "gotten"?
不,无法验证您的模拟对象是否被用作分配的一部分。 myValidation
的分配发生在 Moq 框架的范围之外,因此 Moq 无法进行任何拦截来跟踪它。
作为@Lee 状态,假设 myValidation
在其他地方使用,并且可以检查该变量(将是模拟实例)的使用。
如果您必须知道您的模拟是否被访问,另一种选择是创建一个工厂class,它有一个方法来获取您的验证字典(类似于GetValidation
) 然后将模拟工厂传递给您的 Car
并验证 GetValidation
方法在工厂上被调用。
有没有办法断言我的模拟对象是 "gotten"?
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);
有没有办法断言我的模拟对象是 "gotten"?
不,无法验证您的模拟对象是否被用作分配的一部分。 myValidation
的分配发生在 Moq 框架的范围之外,因此 Moq 无法进行任何拦截来跟踪它。
作为@Lee 状态,假设 myValidation
在其他地方使用,并且可以检查该变量(将是模拟实例)的使用。
如果您必须知道您的模拟是否被访问,另一种选择是创建一个工厂class,它有一个方法来获取您的验证字典(类似于GetValidation
) 然后将模拟工厂传递给您的 Car
并验证 GetValidation
方法在工厂上被调用。