顶点 DML 操作 列表中不允许删除



我正在编写一个Apex测试。

我收到一个编译错误,说DML operation Delete not allowed on List

AsyncApexJob[] currentAsyncJobs = [SELECT Id FROM AsyncApexJob];
delete currentAsyncJobs;

我正在尝试删除所有 AsyncApexJobs,以便稍后可以在执行正在测试的类后检查是否正确数量的作业已排队。

List<AsyncApexJob> asyncJobList = [SELECT Id FROM AsyncApexJob];
System.assertEquals(2, asyncJobList.size(), 'Two jobs should have been enqueued');

我说不出我做错了什么。这是文档

我正在使用带有专家伴侣的原子编辑器。

为了删除作业,您必须调用system.abortJob(jobId(,我不相信您可以通过DML删除作业。

jobId 是与 AsyncApexJob 或 CronTrigger 关联的 ID

对于您的测试,您始终可以获取初始数字,然后检查它是否增加了您期望的数量,如果由于某种原因您无法停止作业,但是如果您使用调度对象计划作业,您应该只测试计划的 cron 按照 https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm

我收到一个编译错误,说 DML 操作不允许删除列表

List<AsyncApexJob> asynclist = new List<AsyncApexJob>();
asynclist = [ Select id ,Status from AsyncApexJob where Status = 'Queued' or Status='holding'];
for ( AsyncApexJob aJob :  asynclist)
{
System.AbortJob(aJob.Id);
}
delete asynclist;

最新更新