等式比较如何适用于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()
的情况下执行此操作?
答案 0 :(得分:5)
您的失败测试不应通过。就.NET中的任何内容而言,它们的功能并不相同 - 至少在当前的Microsoft C#编译器实现方面。代表将参考单独生成的方法(通过查看IL轻松验证。)语言规范允许它们相等,但不需要它,我不知道任何实现这会做到这一点。
代表的平等比较基本上由(对于单一行动代表):
你的测试中第一个条件是假的。