c:\work\vscode\gong_creative-narwhal-9b1x5a_com\force-app\main\default\classes\A...

2026年10月06日 10:07 9.35 秒 success

错误信息

c:\work\vscode\gong_creative-narwhal-9b1x5a_com\force-app\main\default\classes\AttendanceApplicationControllerTest.cls: Field does not exist: recordId on AttendanceApplication__c (360:13) ERROR: c:\work\vscode\gong_creative-narwhal-9b1x5a_com\force-app\main\default\classes\AttendanceApplicationControllerTest.cls: runAs requires a single argument of type 'User' or 'Version' (368:9)

AI 解决方案

1. 🌐 错误翻译

原文:Field does not exist: recordId on AttendanceApplication__c (360:13)
译文:AttendanceApplication__c 对象上不存在字段 recordId (360:13)

原文:runAs requires a single argument of type 'User' or 'Version' (368:9)
译文:runAs 需要一个类型为 'User' 或 'Version' 的参数 (368:9)

2. 🎯 原因分析

  • 错误1:AttendanceApplication__c 自定义对象上不存在 recordId 字段,可能在测试代码中错误地尝试访问该字段。

  • 错误2:runAs() 方法要求传入单个 User 类型或 Version 类型的参数,但代码中可能传入了多个参数或类型错误。

3. 💡 解决方案

// 修复后的代码
@isTest
private class AttendanceApplicationControllerTest {

    @testMethod
    private static void testSomething() {
        // 修复1:使用正确的字段名,通常使用 Id 而非 recordId
        AttendanceApplication__c app = new AttendanceApplication__c();
        // 正确引用对象 Id,而非不存在的 recordId 字段
        System.debug(app.Id);

        // 修复2:runAs 需要传入单个 User 对象
        User testUser = [SELECT Id FROM User LIMIT 1];
        System.runAs(testUser) {
            // 测试逻辑
        }
    }
}

4. 🛡️ 预防措施

  • ✅ 字段验证:在 Salesforce 开发者控制台的 Schema Builder 或对象管理器中确认自定义对象的字段列表。

  • ✅ 类型检查:使用 IDEA 或 IDE 插件(如 Illuminated Cloud)开启编译时类型检查,提前发现参数类型错误。