2012-05-30 59 views
1

只是一個例子:我有一個可以設置屬性的類。更具體地說,一旦它們全部被設置,就有裝配被加載的三個屬性。之後會觸發一個事件。將屬性賦值爲一個動作

我對這種行爲的單元測試是這個樣子:

bool assemblyLoaded = false; 
loader.AssemblyLoaded +=() => assemblyLoaded = true; 
loader.Type = "someType"; 

Assert.IsFalse(assemblyLoaded); // not loaded, only one property was set 

這將導致三個單元測試,一個測試每個屬性。所以我想抽象測試使用幫助方法(見下文),以避免代碼複製:

private void Testfoobar(Action setProperty) 
{ 
    bool assemblyLoaded = false; 
    loader.AssemblyLoaded += (sender, args) => assemblyLoaded = true; 
    setProperty(); 
} 

不幸的是,我不能讓一個屬性賦值的動作。

所以,我想知道,你能以某種方式將這個任務「轉換」爲Action嗎?或者可能有不同的方法來抽象代碼?

+0

你得到什麼錯誤? –

回答

2

你是什麼意思,當你說你不能做一個財產分配行動?
你無法實施該作業?
你爲什麼不能使用

Action<loader> action =(loader)=>loader.Type="someType"; 

如果你想委託做到這一點,你可以使用功能該<>代表:

Func<string> funct =()=>"someType"; 
+0

你說得對。我忘了使用括號。相反,我直接使用賦值(x = y)作爲參數。謝謝! – RolandK

相關問題