You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

保存Apex测试类遇方法不存在/签名错误,求技术协助

问题解决:Apex测试类保存报错——方法不存在或签名错误

错误信息

Method does not exist or incorrect signature: void exceptionLogFromFlow(List<CS_ExceptionLoggerFlowTest.WrapperClass>) from the type CS_ExceptionLoggerFlow

错误原因

主类CS_ExceptionLoggerFlow中被@InvocableMethod标注的exceptionLogFromFlow方法,接收的参数类型是List<CS_ExceptionLoggerFlow.Params>,但测试类里传入的是自定义的List<CS_ExceptionLoggerFlowTest.WrapperClass>。两个内部类分属不同的外部类,类型完全不兼容,导致方法签名匹配失败。

解决方案

测试类需直接使用主类定义的Params类构建参数列表,无需自行定义同名内部类。

修改后的测试类代码

@isTest
Public class CS_ExceptionLoggerFlowTest {
    @isTest
    static void SingleExceptionMethod() {
        // 实例化主类的Params内部类
        CS_ExceptionLoggerFlow.Params param = new CS_ExceptionLoggerFlow.Params();
        param.apexClass = 'CS_ExceptionLoggerFlow';
        param.methodName = 'createExceptionLog';
        param.exceptionMessage = 'message';
        param.exceptionDated = System.now(); // 修正类型不匹配:原代码用Date类型赋值给DateTime字段
        param.isAPIFailure = false;
        param.userName = 'userName';
        
        List<CS_ExceptionLoggerFlow.Params> paramList = new List<CS_ExceptionLoggerFlow.Params>();
        paramList.add(param);
        
        Test.startTest();
        CS_ExceptionLoggerFlow.exceptionLogFromFlow(paramList);
        Test.stopTest();
        
        // 新增断言验证日志是否成功插入
        ExceptionLogger__c log = [SELECT Id, Apex_Class__c FROM ExceptionLogger__c LIMIT 1];
        System.assertEquals('CS_ExceptionLoggerFlow', log.Apex_Class__c);
    }
}

额外说明

  1. 原测试类中Wlu.exceptionDated=System.today();存在类型错误:System.today()返回Date类型,而Params类的exceptionDated是DateTime类型,改用System.now()可解决该问题。
  2. 添加断言语句能直接验证测试逻辑的正确性,确保日志记录按预期插入到数据库中。

内容的提问来源于stack exchange,提问作者Pihu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:20:35