Func NUnit Equality Comparison

时间:2012-10-08 09:11:24

标签: c# nunit equality func

等式比较如何适用于Func?我已将问题的复杂性降低到这些单元测试中:

[Test]
public void Will_Pass()
{
    Func<string> func = () => "key";
    Assert.That(func, Is.EqualTo(func));
}

[Test]
public void Will_Fail()
{
    Func<string> funcA = () => "key";
    Func<string> funcB = () => "key";
    Assert.That(funcA, Is.EqualTo(funcB));
}

我需要测试 - 并成功断言 - Func的一个实例等于另一个实例。所以我基本上需要一种方法来使失败测试通过。

有没有办法在不创建自定义类型和覆盖Equals()的情况下执行此操作?

1 个答案:

答案 0 :(得分:5)

您的失败测试不应通过。就.NET中的任何内容而言,它们的功能并不相同 - 至少在当前的Microsoft C#编译器实现方面。代表将参考单独生成的方法(通过查看IL轻松验证。)语言规范允许它们相等,但不需要它,我不知道任何实现这会做到这一点。

代表的平等比较基本上由(对于单一行动代表):

  • 代表们是否参考相同的方法?
  • 如果代表有目标,这些目标是否相等?

你的测试中第一个条件是假的。