【问题标题】:Internal properties are not handled by NSubstituteNSubstitute 不处理内部属性
【发布时间】:2013-11-14 08:12:02
【问题描述】:

假设我有以下课程:

public abstract class Test
{
    internal abstract int Prop 
    {
        get;
    }
}

现在,我尝试使用 NSubstitute 进行模拟:

var mock = Substitute.For<Test>();

但是失败了:

来自程序集的“Castle.Proxies.TestProxy”类型中的方法“get_Prop” 'DynamicProxyGenAssembly2,版本=0.0.0.0,文化=中性, PublicKeyToken=a621a9e7e5c32e69' 没有实现。

我想将NSubstitute 添加到[InternalsVisibleTo],但不幸的是我测试的程序集是签名的,NSubstitute 不是,Internals 不能是VisibleTo 未签名的类。

我该如何解决这个问题?

【问题讨论】:

    标签: c# internal nsubstitute


    【解决方案1】:

    我找到了解决方案。必须在程序集的Assembly.cs 文件中添加以下行,他要测试(不是测试程序集):

    [assembly:InternalsVisibleTo("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
    

    【讨论】:

    • 你在那里使用哪个公钥?是常数吗?
    • 那是前段时间,但 AFAIR 这是从 NSubstitute 程序集中提取的公钥(有一种方法可以使用 Visual Studio 提供的工具来执行此操作)。
    • 是的,它似乎是恒定的。我将它粘贴到我的 assemblyinfo.cs 中,它按原样工作。
    • 使用 [assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)] 代替
    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2015-11-06
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多