如何理解@TestClass Apex 代码,其中 List 嵌入在 Map 中
How To Understand @TestClass Apex code with List embedded in Map
我正在尝试理解这段代码,这似乎是 test class
,但我很难理解这段代码,我从概念上知道 List 和 Map 集合在 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};
}
}
它在技术上是一个测试 class,但它不执行任何测试。其目的是为包含测试方法的其他测试 classes 创建测试数据。它具有 @isTest 注释的原因是它只能在测试上下文中访问,并且不计入组织的总测试覆盖率。
显示的方法创建了一个 Chatter 组并将用户添加到组中(如果用户的名称为 "User User"。
下面的代码插入 Chatter Group,然后检索它,以便 ID 可用。我认为在这种情况下不需要检索,但我必须对其进行测试。
CollaborationGroup groupe = new CollaborationGroup(Name = 'Test1', CollaborationType = 'Public');
insert groupe;
groupe = [SELECT Id, Name FROM CollaborationGroup WHERE Name = 'Test1'];
下一部分检索用户(大概是在另一个测试中创建的 class)
List<User> users = [SELECT Id, Name, Numero_de_plaque__c, SenderEmail
FROM User
WHERE Name = 'User User'];
然后,CollaborationGroupMembers 列表被实例化。循环开始遍历每个用户。对于每个用户,都会实例化一个新的 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};
我正在尝试理解这段代码,这似乎是 test class
,但我很难理解这段代码,我从概念上知道 List 和 Map 集合在 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};
}
}
它在技术上是一个测试 class,但它不执行任何测试。其目的是为包含测试方法的其他测试 classes 创建测试数据。它具有 @isTest 注释的原因是它只能在测试上下文中访问,并且不计入组织的总测试覆盖率。
显示的方法创建了一个 Chatter 组并将用户添加到组中(如果用户的名称为 "User User"。
下面的代码插入 Chatter Group,然后检索它,以便 ID 可用。我认为在这种情况下不需要检索,但我必须对其进行测试。
CollaborationGroup groupe = new CollaborationGroup(Name = 'Test1', CollaborationType = 'Public');
insert groupe;
groupe = [SELECT Id, Name FROM CollaborationGroup WHERE Name = 'Test1'];
下一部分检索用户(大概是在另一个测试中创建的 class)
List<User> users = [SELECT Id, Name, Numero_de_plaque__c, SenderEmail
FROM User
WHERE Name = 'User User'];
然后,CollaborationGroupMembers 列表被实例化。循环开始遍历每个用户。对于每个用户,都会实例化一个新的 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};