表达<FUNC <字符串>&GT;调用它的方法和单元测试</func <string>

时间:2014-08-01 11:50:27

标签: c# lambda

有人可以帮助分解并解释以下方法,以及它与调用它的单元测试有何关系?

static class Class1 
{
  public static Expression<Func<string>> Method1(Interface1 param1, string param2)
  {
    return () => param1.Method2(
      param2
    );
  }
}

在单元测试中。 &#39; A&#39;上课是FakeItEasy:

A.CallTo(
  Class1.Method1(
    instanceOfInterface1,
    "someText"
    )
).MustHaveHappened();

1 个答案:

答案 0 :(得分:1)

该方法的内容实际上与单元测试无关。该测试检查具有这些特定参数Method1的对象(不同类型)是否称为(instanceOfInterface1, "someText")。单元测试可能会在MustHaveHappened检查之前执行一些代码吗?

此方法的结果是一个表达式,它将对Method2实例上的param1的调用包装起来,并将param2作为参数传递。实际上并未调用Method2。生成的Expression<Func<string>>对象包含一个表达式树,它允许您以编程方式检查方法的主体。