在C#中,您可以使用InternalsVisibleToAssemblyInfo.c中的属性创建一个测试项目访问项目内部的权限,这样您就可以对项目中不希望公开的部分进行单元测试.
[assembly: InternalsVisibleTo("MyTestProject")]
Run Code Online (Sandbox Code Playgroud)
我无法在F#中发现等效的解决方案,或者甚至发现如何将属性添加到程序集中.是否有解决方案(或等效的解决方法),如果是,它是什么?
Jeff Mercado获得汇编属性的解决方案(我之前从未见过)导致了我的问题的以下解决方案.谢谢杰夫!
module AssemblyInfo
open System.Runtime.CompilerServices
[<assembly: InternalsVisibleTo("MyTestProject")>]
do()
Run Code Online (Sandbox Code Playgroud)
把它放到你的 fsproj 文件中:
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>$(AssemblyName).Tests</_Parameter1>
</AssemblyAttribute>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>DynamicProxyGenAssembly2</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
请注意,仅在使用 Moq 时才需要 DynamicProxyGenAssembly2 条目。