2011-06-12 62 views
0

这是“ConfigurationSection”类的属性“LoggerName”。用犀牛模拟模拟物业吸气

/// <summary> 
/// Gets The LoggerName. 
/// </summary> 
[ConfigurationProperty("LoggerName", IsRequired = true)] 
public string LoggerName 
{ 
    get { return Convert.ToString(this["LoggerName"]); } 
} 

如果我创建一个存根或这种类型的严格模拟,当这个属性被调用,它抛出一个异常。

我试着用代码来嘲笑这个属性如:

Expect.Call(configSection.LoggerName).Return("LOREMIPSUM"); 

configSection.Stub(x => x.LoggerName).Return("LOREMIPSUM"); 

但这个代码调用该属性的getter和抛出异常。

我看过不同的地方,我试过的所有方法都做同样的事情。

有人知道任何可以帮助我吗?

非常感谢提前。

瑞安

回答

2

对于犀牛嘲笑类,你必须标记你被嘲讽为virtual属性。

你可以尝试改变你的财产,以该

public virtual string LoggerName 
{ 
    get { return Convert.ToString(this["LoggerName"]); } 
} 

,看看你能得到它的工作?

+1

另外,尝试提取接口,像接口ILog {string LoggerName {get; set}} – 2011-06-12 22:14:06

+0

另一种选择是切换到一个模拟框架,可以发射嘲笑类的IL,所以你不必标记成员虚拟仅用于测试目的。 – 2011-06-12 22:15:35

+0

PostSharp不是免费的;) – 2011-06-12 22:16:39