Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Salesforce-如何使用特定的配置文件权限运行testMethods?_Unit Testing_Salesforce - Fatal编程技术网

Unit testing Salesforce-如何使用特定的配置文件权限运行testMethods?

Unit testing Salesforce-如何使用特定的配置文件权限运行testMethods?,unit-testing,salesforce,Unit Testing,Salesforce,我们有一段代码要从公共站点的用户那里运行 目前,testMethods作为标准测试用户运行,代码运行良好。但是,该功能在站点上失败,在运行代码之前请求用户身份验证(这不应该,因为用户没有Salesforce凭据) 有没有一种方法可以让testMethods作为站点的来宾用户或类似的概要文件运行?请记住,我们无法事先知道配置文件的名称,并且在测试运行时配置文件可能甚至不存在。Salesforce使用System.runas方法作为特定用户运行测试。如果您事先不知道概要文件名,我假设您是在托管包或类

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

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


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

Salesforce使用System.runas方法作为特定用户运行测试。如果您事先不知道概要文件名,我假设您是在托管包或类似的东西中进行此操作的

您可以从

}
}

这听起来正是我们需要的。但是如果我不知道网站的名字呢?或者我应该在我的组织上创建一个站点来进行测试?(我认为依赖现有数据进行测试是不好的做法)。您可以查询站点Sobject以获取名称。
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()); }
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());
}