0

我创建了一个自定义相等比较器,并针对比较器运行了适当的测试。

现在我试图模拟它,以便我正在测试的使用比较器的类不必传递真实的东西。

我的方法调用如下所示:

left.Except(right, customEqualityComparer);

其中变量“left”和“right”是任何类型的两个列表,customEqualityComparer 是我的自定义相等比较器。

我的问题是我不知道如何模拟 customEqualityComparer 因为它仍然必须以现实的方式行事。

我正在考虑创建一个包含该方法的类:

public List<object> LeftExceptRight(customEqualityComparer, left, right){}

并嘲笑整个方法。这是矫枉过正吗?我看不到任何其他选择..

4

1 回答 1

1

这是矫枉过正吗?

听起来像我。为什么你首先要模拟你的比较器?它是否在测试方面做任何特别困难的事情,例如使用外部 Web 服务或数据库?(那将是不寻常的。)

只要您的比较器本身也经过了彻底的测试,我认为在测试中使用它来实际使用它没有问题。嘲笑它并没有任何显着的好处——实际上恰恰相反。当您在测试中使用它时,您将有效地测试调用代码和比较器之间的集成......它们可以很好地协同工作,而不仅仅是单独工作。

我知道有些人固执地坚持认为单元测试真的需要一次只测试一个类的代码......但实用主义让我相信,虽然在许多情况下模拟确实很有价值,但很容易过火它 - 并且仅使用实际实现的简单方法通常是要走的路。

于 2013-07-02T22:00:38.493 回答