我們有一段代碼可以從公共站點的用戶運行。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