最小起订量内部方法

Moq Internal Methods

我是最小起订量的新手,正在尝试为以下 class 实施最小起订量测试,但遇到错误。

public class ClassToTest {
   internal Func<string> GetConfigString = 
        () => ConfigurationManager.AppSettings["somekey"].ToString()
}

测试方法

var mock = new Mock<ClassToTest>();
mock.Setup(m => m.GetConfigString).Returns(It.IsAny<Func<string>>());

安装失败并显示消息:

expression is not a method invocation

我在 AssemblyInfo.cs 中添加了以下行,但测试仍然失败。谁能告诉我哪里错了?

[assembly:InternalsVisibleTo("DynamicProxyGenAssembly2,Publi‌​cKey=002400000480000‌​09400000006020000002‌​40000525341310004000‌​001000100c547cac37ab‌​d99c8db225ef2f6c8a36‌​02f3b3606cc9891605d0‌​2baa56104f4cfc0734aa‌​39b93bf7852f7d926665‌​4753cc297e7d2edfe0ba‌​c1cdcf9f717241550e0a‌​7b191195b7667bb4f64b‌​cb8e2121380fd1d9d46a‌​d2d92d2d15605093924c‌​ceaf74c4861eff62abf6‌​9b9291ed0a340e113be1‌​1e6a7d3113e92484cf70‌​45cc7")]

GetConfigString转换成例如属性 并添加 virtual 关键字,否则将无法使用 Mock。

    internal virtual Func<string> GetConfigString
    {
        get
        {
            return () => ConfigurationManager.AppSettings["somekey"];
        }
    }