Salesforce - 如何运行具有特定配置文件权限的测试方法?

时间:2012-07-25 13:39:54

标签: unit-testing salesforce

我们有一段代码可以从公共站点的用户运行。

目前,testMethods作为标准测试用户运行,代码工作正常。但是,网站上的功能失败,在运行代码之前请求用户身份验证(不应该,因为用户不会拥有Salesforce凭据)。

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

3 个答案:

答案 0 :(得分:0)

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());
}

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:-1)

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()); }

} }