我有一個依賴,我想嘲笑。我可以使用Moq爲字段設置值嗎?
public abstract class MyDependency
{
protected Dictionary<string, object> _outputs = new Dictionary<string, object>();
public Dictionary<string, object> Outputs
{
get
{
return _outputs;
}
}
}
我需要的公共財產Outputs
爲我的單元測試的目的返回一個已知值。我知道我們不能嘲笑字段或非虛擬成員。所以,我可以去創建自己的嘲笑MyDependency
,設置支持字段_outputs
:
public class MockMyDependency : MyDependency
{
public MockMyDependency()
{
_outputs = new Dictionary<string, object>
{
{ "key", "value" }
};
}
}
然而,就是有可能使用起訂量來做到這一點沒有明確地創造我自己的派生模擬類?
'SetupGet()'在抽象類上工作嗎? – 48klocs 2013-04-09 20:02:42
@ 48klocs是的,但要正確地模擬屬性(或方法),該屬性必須標記爲「abstract」或「virtual」。不幸的是,我無法修改MyDependency類。 – 2013-04-09 20:32:15