Как понять код Apex @TestClass со списком, встроенным в карту - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь понять этот код, кажется, что это test class, но мне трудно разобраться в коде, я концептуально знаю, как работает коллекция списков и карт в отделе продаж, но это, кажется, мало трудно понять,

. Вкратце мне кажется, что это тестирование метода, который просматривает список 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};
     }
}

1 Ответ

1 голос
/ 23 марта 2020

Технически это тестовый класс, но он не выполняет никаких тестов. Его целью является создание тестовых данных для других тестовых классов, которые содержат методы тестирования. Причина, по которой он имеет аннотацию @isTest, заключается в том, что он доступен только в контексте тестирования и не учитывается в общем охвате тестирования организации.

Показанный метод создает группу Chatter и добавляет пользователей в группу. если они имеют имя «Пользователь-пользователь».

Приведенный ниже код вставляет группу Chatter, а затем извлекает ее, чтобы Id был доступен. Я не думаю, что поиск необходим в этом случае, но я должен был бы проверить его.

  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'];

Затем создается список CollaborationGroupMembers. Начинается l oop, который перебирает каждого пользователя. Для каждого пользователя создается новый CollaborationGroupMember и добавляется в список.

  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};
...