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