【问题标题】:Salesforce - How can I run testMethods with specific profile permissions?Salesforce - 如何运行具有特定配置文件权限的 testMethods?
【发布时间】:2021-06-21 18:53:41
【问题描述】:

我们有一段代码旨在从公共站点的用户那里运行。

目前,testMethods 以标准测试用户身份运行,代码运行良好。但是,站点上的功能失败,在运行代码之前请求用户身份验证(不应该,因为用户没有 Salesforce 凭据)。

有没有一种方法可以让 testMethods 作为站点的访客用户或类似的配置文件运行?请记住,我们无法事先知道配置文件的名称,并且在运行测试时配置文件甚至可能不存在。

【问题讨论】:

    标签: unit-testing salesforce


    【解决方案1】:
    Profile p = [SELECT Id FROM Profile WHERE Name='MyProfile']; 
    
    User u = new User(Alias = 'standt', Email='standarduser@testorg.com', 
            EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US', 
            LocaleSidKey='en_US', ProfileId = p.Id, TimeZoneSidKey='America/Los_Angeles', UserName='standarduser@testorg.com');
    
    System.runAs(u) 
    {
            System.debug('Current User: ' + UserInfo.getUserName());
    }
    

    【讨论】:

      【解决方案2】:

      您需要创建一个具有特定个人资料或相关权限集的用户。您可以在先前的方法中执行此操作。对该方法也使用@isTest。

      然后使用 Run As System.runAs(u) 功能以该用户身份运行该方法。

      访问https://nonitechsolutions.blogspot.com/2021/06/salesforce-enable-guest-user-on-your.html

      【讨论】:

        【解决方案3】:

        Salesforce 有 System.runas 方法以特定用户身份运行测试。如果您提前不知道配置文件名称,我假设您是在托管包或类似的东西中执行此操作。

        您可以从docs 中执行类似以下示例的操作

        public class TestRunAs {
           public static testMethod void testRunAs() {
              User u;
              u = [select ID from user where communitynickname = :yoursitename]
        
        
              System.runAs(u) {
              // The following code runs as user 'u'  
        
              System.debug('Current User: ' + UserInfo.getUserName());
              System.debug('Current Profile: ' + UserInfo.getProfileId()); }
        

        } }

        【讨论】:

        • 这听起来正是我们所需要的。但是,如果我不知道该站点的名称怎么办?或者我应该在我的组织上创建一个站点只是为了测试? (我认为依赖现有数据进行测试是不好的做法)。
        • 您可以查询站点对象以获取名称。
        猜你喜欢
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        • 1970-01-01
        • 2017-08-09
        • 2023-04-03
        • 2011-09-17
        • 2012-09-17
        相关资源
        最近更新 更多