c# – 如何在AutoMock(Moq)中使用Lazy <>
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何在AutoMock(Moq)中使用Lazy <>,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1166字,纯文字阅读大概需要2分钟。
内容图文
![c# – 如何在AutoMock(Moq)中使用Lazy <>](/upload/InfoBanner/zyjiaocheng/810/46d0be393b104862b693d060b9bb37e3.jpg)
我们正在使用Autofac.Extras.Moq.AutoMock.
现在,我使用了Lazy<>的构造函数依赖项.
public MyService(Lazy<IDependency> myLazyDependency) {...}
要测试MyService,我们需要模拟Lazy< Dependency>.
我正在尝试这个
[ClassInitialize]
public static void Init(TestContext context)
{
autoMock = AutoMock.GetLoose();
}
[TestInitialize]
public void MyTestInitialize()
{
var myDepMock = autoMock.Mock<Lazy<IDependency>>(); // <-- throws exception
}
这是测试运行器返回的异常:
初始化方法Tests.MyServiceTests.MyTestInitialize引发异常. System.InvalidCastException:System.InvalidCastException:无法转换类型为’System.Lazy1 [IDependency]’的对象以键入’Moq.IMocked1 [System.Lazy`1 [IDependency]]’..
那么,我怎样才能传递一个懒惰的<>使用automock模拟对象.
解决方法:
你不需要模拟Lazy,因为它是框架的一部分(除非某些极端情况).您可以简单地模拟IDependency并将模拟对象传递给Lazy.
这样的事情应该有效:
var mockDependency = autoMock.Mock<IDependency>();
var mockObject = mockDependency.Object; //(Not entirely sure of the property for this library)
var mockedLazy = new Lazy<IDependency>(() => mockObject);
请注意,这意味着Lazy基本上不会对您的测试做任何事情(如果这是一个问题) – 它只会在第一次使用时返回已经创建的模拟
内容总结
以上是互联网集市为您收集整理的c# – 如何在AutoMock(Moq)中使用Lazy <>全部内容,希望文章能够帮你解决c# – 如何在AutoMock(Moq)中使用Lazy <>所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。