2012-05-30 60 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

相关问题