我们有一段代码可以从公共站点的用户运行。Salesforce - 如何使用特定的配置文件权限运行testMethods?
目前,testMethods作为标准测试用户运行,并且代码正常工作。但是,网站上的funcionality失败,请求在运行代码之前进行用户认证(不应该,因为用户将不具有Salesforce凭据)。
有没有一种方法可以使testMethods作为网站的访客用户或类似的配置文件运行?请记住,我们无法事先知道配置文件的名称,并且运行测试时配置文件可能不存在。
我们有一段代码可以从公共站点的用户运行。Salesforce - 如何使用特定的配置文件权限运行testMethods?
目前,testMethods作为标准测试用户运行,并且代码正常工作。但是,网站上的funcionality失败,请求在运行代码之前进行用户认证(不应该,因为用户将不具有Salesforce凭据)。
有没有一种方法可以使testMethods作为网站的访客用户或类似的配置文件运行?请记住,我们无法事先知道配置文件的名称,并且运行测试时配置文件可能不存在。
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()); }
}}
Profile p = [SELECT Id FROM Profile WHERE Name='MyProfile'];
User u = new User(Alias = 'standt', Email='[email protected]',
EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
LocaleSidKey='en_US', ProfileId = p.Id, TimeZoneSidKey='America/Los_Angeles', UserName='[email protected]');
System.runAs(u)
{
System.debug('Current User: ' + UserInfo.getUserName());
}
这听起来是正是我们所需要的。但是如果我不知道该网站的名字怎么办?还是应该在我的组织上创建一个站点来测试? (我认为依赖现有数据进行测试是不好的做法)。 – 2012-07-25 20:53:08
您可以查询Site Sobject以获取名称。 – 2012-07-25 22:03:30