Тестирование с пользователем сообщества, getNetworkId возвращает ноль

@isTest 
public static void TestEmptySearchQuery() {    

    User thisUser = [ select Id from User where Id = :UserInfo.getUserId() ];
        System.runAs ( thisUser ) {     // running as thisUser to Avoid Error: MIXED_DML_OPERATION
        setupData();   // inside setupData, community is created successfully 
        generateUser(); // List of user assigned with some profile, as required for project.  

        list<PermissionSetAssignment> PSA = new  list<PermissionSetAssignment> ();
        PermissionSet ps = [SELECT Id, name FROM PermissionSet where name='Some_Access'];
        system.debug('PermissionSet ' + ps);           
        for(user u:userList)
            PSA.add(new PermissionSetAssignment(AssigneeId = u.id, PermissionSetId = ps.Id));      // all the user assgined with some_access based on requirement of project
        insert PSA;
    }

    Test.startTest(); 
    User usr = [select Id from User where Id = :userList[0].id];

    System.runAs(usr) {
        system.debug('Network ommunityId ****' + Network.getNetworkId());  //getting null 
        SomeClass obj = new SomeClass();
        Id Nid=obj.fetchNetworkId(); // return null;   
        system.debug('network id ' + Nid);  // null
    } 
    Test.stopTest();        
} 

class SomeClass {
//some code
    public id fetchNetworkId() {
        system.debug('network id ' + Network.getNetworkId()); // network id null;
        return Network.getNetworkId(); // return null
    }
    // some code
}

При нормальной работе страницы контроллер возвращает правильный сетевой идентификатор, при попытке написать для этого тестовый класс сетевой идентификатор сообщества всегда возвращает нуль.

1 ответ

Пользователь, которого вы используете для runAs, должен быть частью сообщества, поэтому вам нужно создать учетную запись, создать контакт, а затем пользователя для этого контакта. Это делает пользователя runAS частью сообщества.

Другие вопросы по тегам