c:\work\vscode\gong_creative-narwhal-9b1x5a_com\force-app\main\default\classes\A...
错误信息
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)开启编译时类型检查,提前发现参数类型错误。