0
感謝您的閱讀。作爲標準用戶運行批量頂點測試方法
我想寫一個測試方法,運行一個批處理頂點刪除使用標準用戶沒有刪除訪問的情況下,但每當我運行測試,我看到批處理下我目前(管理員)用戶。我錯過了什麼嗎?
這是我的批處理代碼:
global with sharing class BatchDelete implements
Database.Batchable<sObject>, Database.Stateful {
// instance member to retain state across transactions
global Integer recordsProcessed = 0;
global Database.QueryLocator start(Database.BatchableContext bc) {
return Database.getQueryLocator(
'SELECT ID ' +
'FROM Case '
);
}
global void execute(Database.BatchableContext bc, List<Case> scope){
System.debug('---------BATCH----------');
System.debug('Current BATCH User: ' + UserInfo.getUserName());
System.debug('isAccessible: ' + Case.sObjectType.getDescribe().isDeletable());
System.debug('------------------------');
// process each batch of records
List<Case> cases = new List<Case>();
for (Case c1 : scope) {
cases.add(c1);
}
delete cases;
}
global void finish(Database.BatchableContext bc){
System.debug(recordsProcessed + ' records processed. Shazam!');
} }
而且我的測試方法代碼:
@isTest(SeeAllData=false)
static void test_readOnlyUser() {
UserLicense uL =[SELECT Id,LicenseDefinitionKey,Name FROM UserLicense WHERE Name = 'Salesforce'];
Profile p = [SELECT Id FROM Profile WHERE UserLicenseId =: uL.Id AND UserType = 'Standard'
AND PermissionsModifyAllData = false AND PermissionsViewAllData = false limit 1 ];
User u = new User(
UserName = '[email protected]',
FirstName = 'Test-First-Name',
LastName = 'Test-Last-Name',
Alias = 'test',
Email = '[email protected]',
EmailEncodingKey = 'UTF-8',
LanguageLocaleKey = 'en_US',
LocalesIdKey = 'en_US',
TimezonesIdKey = 'America/Los_Angeles',
ProfileId = p.Id
);
Case c1 = new Case();
c1.Status = 'New';
insert c1;
Test.startTest();
System.runAs(u) {
System.debug('---------TEST-----------');
System.debug('Current User: ' + UserInfo.getUserName());
System.debug('isAccessible: ' + Case.sObjectType.getDescribe().isDeletable());
System.debug('------------------------');
BatchDelete myBatchObject = new BatchDelete();
Id batchId = Database.executeBatch(myBatchObject);
}
Test.stopTest();
} }
這是正確的解決方案。謝謝。 –