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

不幸的是,我无法将属性分配设为操作。

所以,我想知道,你能以某种方式将作业“转换”为行动吗?或者是否有不同的方法来抽象代码?

4

1 回答 1

2

当您说您不能将属性分配作为操作时,您是什么意思?
你不能在行动中执行任务吗?
为什么不能使用

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

如果你想用委托来做,你可以使用 Funct<> 委托:

Func<string> funct = ()=>"someType";
于 2012-05-30T16:22:59.873 回答