模拟一个模拟对象列表或列表

时间:2013-05-20 09:57:36

标签: c# java list unit-testing mocking

我有一个使用对象列表的类。你会如何模拟列表?为什么?你是否模拟了List,以便在调用list方法时返回Mock对象。或者您是否使用模拟对象创建列表实例?

下面是一个粗略的代码示例。因此,如果我模拟List,我需要知道列表的使用方式,并在列表的方法上设置正确的返回/期望。要么 使用模拟对象列表,我只需要使用模拟对象设置列表,并断言每个模拟订阅者都被使用了。

我测试每个订阅者都被调用,在我看来后一种方法是正确的,你的观点是什么?

public class Publisher {

    private List<Subscriber> subscribers;

    public void publish() {
        // loop through subscribers
    }

}

2 个答案:

答案 0 :(得分:3)

模拟List嘲讽听起来就像是把鲨鱼蹦到我身上。我会说回归List嘲讽就足够了。

您没有测试List实施 - 您知道有效。使用它。

答案 1 :(得分:1)

当您想要时需要:

  1. 指示您控制下的类执行预定义的行为(例如,返回已知值,抛出预定义的异常)。
  2. 测试一个类以确保它执行预期的行为。
  3. 在您的情况下,您当然不希望定义List来执行任何特殊行为,您也不想测试List类以按预期执行。所以你不应该创建列表的模拟。

    您的测试对象是订阅者。所以你是对的,你需要一个订阅者模拟列表。