我们有一段代码旨在从公共站点的用户运行。
目前,testMethods 以标准测试用户身份运行,并且代码运行良好。但是,站点上的功能失败,在运行代码之前请求用户身份验证(不应该,因为用户没有 Salesforce 凭据)。
有没有一种方法可以让 testMethods 作为站点的访客用户或类似的配置文件运行?请记住,我们无法事先知道配置文件的名称,并且在运行测试时配置文件甚至可能不存在。
我们有一段代码旨在从公共站点的用户运行。
目前,testMethods 以标准测试用户身份运行,并且代码运行良好。但是,站点上的功能失败,在运行代码之前请求用户身份验证(不应该,因为用户没有 Salesforce 凭据)。
有没有一种方法可以让 testMethods 作为站点的访客用户或类似的配置文件运行?请记住,我们无法事先知道配置文件的名称,并且在运行测试时配置文件甚至可能不存在。
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());
}
您将需要创建一个具有特定配置文件或相关权限集的用户。您可以在先前的方法中执行此操作。对该方法也使用@isTest。
然后使用 Run As System.runAs(u) 功能以该用户身份运行该方法。
访问https://nonitechsolutions.blogspot.com/2021/06/salesforce-enable-guest-user-on-your.html
Salesforce 有 System.runas 方法以特定用户身份运行测试。如果您提前不知道配置文件名称,我假设您是在托管包或类似的东西中执行此操作。
您可以从文档中执行以下示例
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()); }
} }