我有一个有内部方法的类,我想模拟内部方法。但我无法模拟它,即它不是调用模拟函数而是调用原始函数。有什么办法可以实现这一点吗?
编辑:实际上我是最小起订量的新手。我有很多类和类的方法来使用最小起订量进行测试。许多类是内部的,许多有内部方法,许多有非虚拟方法。并且不能更改方法和类上的签名。谁能告诉我如何使用最小起订量测试这个场景。或者请建议我一些其他易于学习且易于使用的测试框架。
您可以通过将以下内容添加到 AssemblyInfo.cs 来轻松模拟内部虚拟方法:
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] // namespace in Moq
[assembly: InternalsVisibleTo("YourTestClass")]
如果您的程序集是强命名的,则需要包含 DynamicProxyGenAssembly2 的公钥(感谢@bvgheluwe 的评论;来源:Moq快速入门指南 https://github.com/Moq/moq4/wiki/Quickstart#advanced-features):
[assembly:InternalsVisibleTo("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
我不明白为什么接受的答案说你不应该这样做。当您使用 Roy Osherove 中概述的“提取和覆盖”(本地工厂方法)依赖项注入技术时,这不是您所做的吗?单元测试的艺术第 3 章 http://wayback.archive.org/web/20150810200047/http://www.manning.com/osherove/SampleChapter3.pdf?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)