【问题标题】:First error: INVALID_CROSS_REFERENCE_KEY, Assigned To ID: owner cannot be blank: [OwnerId]第一个错误:INVALID_CROSS_REFERENCE_KEY,分配给 ID:所有者不能为空:[OwnerId]
【发布时间】:2013-02-14 03:18:54
【问题描述】:

我正在为我的控制器编写测试。为此,我必须在测试数据库中插入一个事件。

我的测试方法是:

static TestMethod void Test1_TestInsertWithValue()
{
    Meeting_Master__c master = new Meeting_Master__c();
    Event event = new Event();
    Profile p = [SELECT Id From Profile WHERE Name='Standard User'];
    User u2 = new User(Alias = 'newUser', Email = 'newuser@testorg.com', EmailEncodingKey = 'UTF-8', LastName = 'Testing',
    LanguageLocaleKey = 'en_US', LocaleSidKey='America/Los_Angeles', UserName='newuser@testorg.com', ProfileId=p.Id);

    event.OwnerId = u2.Id;
    event.StartDateTime = datetime.newInstance(2008, 12, 1);
    event.EndDateTime = datetime.newInstance(2008, 12, 30);
    event.subject = 'call';
    event.WhatId = master.Id;
    insert master;
    insert event;
    ...........
}

当插入事件发生时,我面临这个错误:

System.DmlException:插入失败。第 0 行的第一个异常;第一个错误:INVALID_CROSS_REFERENCE_KEY,分配给 ID:所有者不能为空:[OwnerId]

如何纠正这个错误?

【问题讨论】:

    标签: salesforce apex-code apex soql


    【解决方案1】:

    您忘记在event.OwnerId =u2.Id; 行之前插入u2

    【讨论】:

      【解决方案2】:

      作为第一个选项,您可以插入测试用户:

       @isTest
       private class test{
      
           static TestMethod void Test1_TestInsertWithValue() {
               Meeting_Master__c master=new Meeting_Master__c();
               Event event =new Event();
               Profile p=[SELECT Id From Profile WHERE Name='Standard User'];
               User u2 =new User( Alias = 'newUser1' ,
                                  Email ='newuser123@testorg.com',
                                  EmailEncodingKey = 'UTF-8',
                                  LastName = 'Testing',
                                  LanguageLocaleKey='en_US',
                                  LocaleSidKey='en_US', // changed for to avoid: INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST, Locale: bad value for restricted picklist field: America/Los_Angeles
                                  UserName='newuser123@testorg.com',
                                  ProfileId=p.Id,
                                  TimeZoneSidKey    = 'America/Los_Angeles');
               insert u2;
      
               event.OwnerId = u2.Id;
               event.StartDateTime = datetime.newInstance(2008, 12, 1);
               event.EndDateTime = datetime.newInstance(2008,12,10); // changed to 10-12-2008 for to avoid: FIELD_INTEGRITY_EXCEPTION, Event duration can not be longer than 14 days
               event.subject='call';
               event.WhatId=master.Id;
               Insert master;
               insert event;
           }
      
       }
      

      第二个选项是尝试使用System.runAs() http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_testing_tools_runas.htm

       @isTest
       private class test{
      
           static TestMethod void Test1_TestInsertWithValue() {
               Meeting_Master__c master=new Meeting_Master__c();
               Event event =new Event();
               Profile p=[SELECT Id From Profile WHERE Name='Standard User'];
               User u2 =new User( Alias = 'newUser1' ,
                                  Email ='newuser123@testorg.com',
                                  EmailEncodingKey = 'UTF-8',
                                  LastName = 'Testing',
                                  LanguageLocaleKey='en_US',
                                  LocaleSidKey='en_US', 
                                  UserName='newuser123@testorg.com',
                                  ProfileId=p.Id,
                                  TimeZoneSidKey    = 'America/Los_Angeles');
      
               Insert master;
      
               System.runAs(u2) {
                  event.StartDateTime = datetime.newInstance(2008, 12, 1);
                  event.EndDateTime = datetime.newInstance(2008,12,10);
                  event.subject='call';
                  event.WhatId=master.Id;
      
                  insert event;
               }
           }
      
       }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 2012-03-09
      • 1970-01-01
      • 2021-04-02
      • 2019-03-17
      • 1970-01-01
      • 2014-01-07
      相关资源
      最近更新 更多