2012-05-01 18 views
0

質問と回答をテストするテストスクリプトを実行したいと思います。質問への回答を挿入すると、次のエラーが表示されます。テストコードが回答に失敗し、カスタマーポータルサイトに返信します

INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY、ヌル:[CommunityId]

ここでは、コードスニペット

 User u2 = new User(abcd);insert u2; 
     User u3 = new User(sfsadfas); insert u3; 


Question question = new Question(); 
       question.Title = 'Test'; 
       question.Body = 'Test'; 
       question.CommunityId = 'asfsadfsadfasdfsa'; 
       insert question;     
       Id questId ; 
       questId = question.Id; 
      System.debug('questId --->'+questId); 
       Reply reply1 = new Reply(); 
       //reply1.Name = 'replyquestion11'; 
       reply1.Body = 'reply no 1 ques 1'; 
       reply1.QuestionId = question.Id; 
       //reply1.CommunityId = 'fasdfsadfsadfsadf'; 
       System.debug('reply1--->'+reply1);   
       insert reply1; 

      Test.startTest(); 
      System.RunAs(u2) 
      { Reply reply2 = new Reply(); 
       //reply1.Name = 'replyquestion11'; 
       reply2.Body = 'reply no 2 ques 1'; 
       reply2.QuestionId = question.Id;  
       System.debug('reply2--->'+reply2);    
       insert reply2;   //Insert Fails here 
      } 

は、いずれかがこれで私を助けることができるです。私はdiffユーザーに質問への返信を投稿したいと考えています。

答えて

0

デフォルトでは、questionとreply1の挿入はあなたの権限で実行されました(システム管理者プロファイルがありますか?)。 次にrunAsを実行します(新鮮なユーザー、標準ライセンスと標準ユーザープロファイルが割り当てられている可能性があります)。彼はsysadminによって作成されたQuestionレコードを見ることができません。

  1. 他のユーザー(自分のプロファイルを明示的に指定することをお勧めします)は少なくとも質問オブジェクトを読む権利を持っていますか?
  2. 彼はこのオブジェクトにView Allを持っているのでしょうか、あるいはpublic readonlyアクセスのための共有設定がありますか?その後、
  3. security model上に読む

、共有設定を適用するか、または少なくとも手動でユニットテストで問題レコードを共有することを決定...

関連する問題