2016-09-30 62 views
1

我是moq的新手,尝试为下面的类实现moq测试,但遇到了错误。Moq内部方法

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>>()); 

的安装失败,一个消息:

表达式不是一个方法调用

我在加入下述线AssemblyInfo.cs但sti测试失败。有人能让我知道我错在哪里吗?

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

回答

0

GetConfigString转换成例如财产,并添加virtual关键字,否则将无法使用模拟与它。

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

感谢您的帮助。将尝试你的方法并在这里更新 – Manoj