【发布时间】:2021-10-01 23:09:20
【问题描述】:
我正在尝试构建一个测试数据工厂来创建多个联系人并将它们附加到一个帐户。该方法应将帐户 ID 映射到联系人列表。但是,我的测试类失败了,我可以从调试日志中看到所有联系人都与一个帐户相关。我已将调试语句放在适当的位置,以便我可以看到在循环内构建的地图,它看起来还不错。然后,当我在循环外立即查看地图时,它包含同一联系人的 4 个副本。这是我的代码,后面是调试语句。我通过使用 2 个帐户和一个联系人来保持简单。如果有人可以提供帮助,我真的很想了解这里出了什么问题。
public static Map<Id, List<Contact>> createContacts(List<Account> accounts, Integer numOfContacts) {
Map<Id, List<Contact>> mapOfAccountIdToListOfContacts = New Map<Id, List<Contact>>();
List<Contact> addedContacts = New List<Contact>();
List<Contact> accContacts = New List<Contact>();
for(Account ac :accounts) {
accContacts.clear();
for(Integer i=0;i<numOfContacts;i++) {
Contact newContact = New Contact(LastName='TestContact' + i,
Email = 'TestContact' + i + '@testco.com',
AccountId = ac.Id);
accContacts.add(newContact);
}
mapOfAccountIdToListOfContacts.put(ac.Id, accContacts);
System.debug('Map.put=' + ac.id + ', ' + accContacts);
addedContacts.addAll(accContacts);
}
insert addedContacts;
for(Id key :mapOfAccountIdToListOfContacts.keyset()) {
System.debug('Contacts=' + mapOfAccountIdToListOfContacts.get(key));
}
return mapOfAccountIdToListOfContacts;
}
和日志输出:
【问题讨论】:
标签: salesforce testng apex