对复杂类引用使用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()){ }
接口没有构造函数,所以不需要向它传递参数,所以要创建mock到IClassHelper
,只需执行以下操作:
var mockClassHelper = new Mock<IClassHelper>();
这是一个界面使用的奇妙世界。