对复杂类引用使用moq

本文关键字:moq 引用 复杂 | 更新日期: 2023-09-27 18:29:10

我在[TestInitialize] 中有这个

var classHelper = new classHelper(mockSessionRepository.Object, new SecurityTokenAgent(), AuthorityReporting.Instance, new UserClientProcessor());
locationRepo = new LocationRepo(mockXmlReader.Object, classHelper);

我想移动classHelper我会做的:

mockClassHelper = new Mock<IClassHelper>(mockSessionRepository.Object, new SecurityTokenAgent(), AuthorityReporting.Instance, new UserClientProcessor());
locationRepo = new LocationRepo(mockXmlReader.Object, mockSecurityHelper.Object);

这似乎是合乎逻辑的,它似乎也打破了我所有的[TestMethods]。请启发我,这是否合乎逻辑?

编辑:位置报告

internal LocationRepo(IXmlReader xmlReader, IClassHelper classHelper)
{
    this.xmlReader = xmlReader;
    this.classHelper = classHelper;
    this.Init();
}
/// <summary>
/// Prevents a default instance of the <see cref="LocationRepo" /> class from being created.
/// </summary>
private LocationRepo() : this(new XmlReader(), new ClassHelper()){ }

对复杂类引用使用moq

接口没有构造函数,所以不需要向它传递参数,所以要创建mockIClassHelper,只需执行以下操作:

var mockClassHelper = new Mock<IClassHelper>();

这是一个界面使用的奇妙世界。