Salesforce 如何理解地图中嵌入列表的@TestClass Apex代码

Salesforce 如何理解地图中嵌入列表的@TestClass Apex代码,salesforce,apex,apex-code,Salesforce,Apex,Apex Code,我试图理解这段代码,这似乎是一个测试类,但我很难理解这段代码,我从概念上知道列表和地图收集在Sales force中是如何工作的,但这似乎有点难理解 .简而言之,对我来说,这似乎是在测试一种浏览CollaborationGroupMember列表的方法。 为此,已经创建了CollaborationGroup,代码试图添加一个用户 有人能花点时间让我逐行理解下面的代码吗 提前谢谢 @isTest public class TestGroupFactory { public stat

我试图理解这段代码,这似乎是一个
测试类
,但我很难理解这段代码,我从概念上知道列表和地图收集在Sales force中是如何工作的,但这似乎有点难理解

.简而言之,对我来说,这似乎是在测试一种浏览CollaborationGroupMember列表的方法。 为此,已经创建了CollaborationGroup,代码试图添加一个用户

有人能花点时间让我逐行理解下面的代码吗

提前谢谢

  @isTest
  public class TestGroupFactory {
    public static Map<CollaborationGroup, List<CollaborationGroupMember>> groupWithMember() {
      CollaborationGroup groupe = new CollaborationGroup(Name = 'Test1', CollaborationType = 'Public');
      insert groupe;
      groupe = [SELECT Id, Name FROM CollaborationGroup WHERE Name = 'Test1'];
      List<User> users = [SELECT Id, Name, Numero_de_plaque__c, SenderEmail
                        FROM User
                        WHERE Name = 'User User'];
       List<CollaborationGroupMember> cgms = new List<CollaborationGroupMember>();
      for (User u : users) {
          CollaborationGroupMember cgm = new CollaborationGroupMember();
          cgm.CollaborationGroupId = groupe.Id;
          cgm.MemberId = u.Id;
          cgms.add(cgm);
       }
       insert cgms;
        return new Map<CollaborationGroup, List<CollaborationGroupMember>>{groupe => cgms};
     }
}
@isTest
公共类TestGroupFactory{
公共静态映射groupWithMember(){
CollaborationGroup groupe=new CollaborationGroup(名称='Test1',CollaborationType='Public');
插入组;
groupe=[从CollaborationGroup中选择Id、名称,其中名称='Test1'];
列表用户=[选择Id、名称、编号、发送邮件]
来自用户
其中Name='User'];
列表cgms=新列表();
for(用户u:用户){
CollaborationGroupMember cgm=新的CollaborationGroupMember();
cgm.CollaborationGroupId=groupe.Id;
cgm.MemberId=u.Id;
cgms.add(cgm);
}
插入CGM;
返回新映射{groupe=>cgms};
}
}

从技术上讲,它是一个测试类,但不执行任何测试。其目的是为包含测试方法的其他测试类创建测试数据。它具有@isTest注释的原因是,它只能在测试上下文中访问,并且不计入组织的总测试覆盖率

显示的方法创建一个Chatter组,如果用户的名称为“User”,则将用户添加到该组中

下面的代码插入Chatter组,然后检索它,以便Id可用。我不认为在这种情况下检索是必要的,但我必须测试它

  CollaborationGroup groupe = new CollaborationGroup(Name = 'Test1', CollaborationType = 'Public');
  insert groupe;
  groupe = [SELECT Id, Name FROM CollaborationGroup WHERE Name = 'Test1'];
下一节检索用户(可能是在另一个测试类中创建的)

组和组成员将添加到映射并返回

return new Map<CollaborationGroup, List<CollaborationGroupMember>>{groupe => cgms};
返回新映射{groupe=>cgms};
  List<CollaborationGroupMember> cgms = new List<CollaborationGroupMember>();
  for (User u : users) {
      CollaborationGroupMember cgm = new CollaborationGroupMember();
      cgm.CollaborationGroupId = groupe.Id;
      cgm.MemberId = u.Id;
      cgms.add(cgm);
   }
insert cgms;
return new Map<CollaborationGroup, List<CollaborationGroupMember>>{groupe => cgms};