1

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

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

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

public class Publisher {

    private List<Subscriber> subscribers;

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

}
4

2 回答 2

4

嘲笑一个List嘲笑听起来像是在向我跳鲨鱼。我会说返回一个List模拟就足够了。

你不是在测试List实现——你知道那行得通。用它。

于 2013-05-20T09:59:49.690 回答
1

当您想要:

  1. 指示您控制下的类执行预定义的行为(例如返回已知值、抛出预定义的异常)。
  2. 测试一个类以确保它执行了预期的行为。

在您的情况下,您当然不想定义 List 来执行任何特殊行为,也不想测试 List 类以按预期执行。所以你不应该创建列表的模拟。

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

于 2013-05-20T10:21:09.513 回答