模拟一个列表或模拟对象列表
本文关键字:模拟 列表 对象 一个 | 更新日期: 2023-09-27 18:14:19
我有一个使用对象列表的类。你会如何嘲笑这个名单,为什么?是否模拟列表,以便在调用列表方法时返回模拟对象。或者使用模拟对象创建列表的实例?
下面是一个粗略的代码示例。因此,如果我模拟List,我需要知道列表是如何使用的,并在列表的方法上设置正确的返回/期望。或对于模拟对象列表,我只需要用模拟对象设置列表,并断言每个模拟订阅者都被"使用"。
我测试每个订阅者都被调用,在我看来后一种方法是正确的,你的看法是什么?
public class Publisher {
private List<Subscriber> subscribers;
public void publish() {
// loop through subscribers
}
}
嘲笑一个List
的嘲笑听起来像是跳鲨鱼对我来说。我想说,返回模拟的List
应该是足够的。
你不是在测试List
的实现——你知道是有效的。使用它。
当您想要:
- 指示在你控制下的类执行一个预定义的行为(例如返回一个已知的值,抛出一个预定义的异常)
- 测试一个类,以确保它执行预期的行为
在您的例子中,您当然不希望定义List来执行任何特殊行为,也不希望测试List类是否按预期执行。因此,不应该创建列表的Mock。
您的测试对象是订阅者。所以你是对的,你需要一个模拟订阅者的列表。