列表上不允许 Apex DML 操作删除

Apex DML operation Delete not allowed on List

我正在编写 Apex 测试。

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

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

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

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

我不知道我做错了什么。这是 documentation

我正在与专家伙伴一起使用 atom 编辑器。

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

The jobId is the ID associated with either AsyncApexJob or CronTrigger

对于您的测试,您始终可以获得初始数字,然后检查它是否增加了您期望的数量,如果由于某种原因您无法停止作业,但如果您正在使用 Schedulable 安排作业,您应该只测试根据 https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm

计划的 cron

我收到一个编译错误,指出列表上不允许删除 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;