従業員の誕生日の 2 日前にマネージャにメール通知を送信する Apex スケジューラを作成しました。
サンドボックスでテストしたので、本番環境に移行する準備ができました。ただし、テスト メソッドでコード カバレッジを取得するのに問題があります。
My Apex Scheduler クラスは、SOQL ステートメントを使用して、取引先名が「当社」であり、誕生日が 2 日後にある取引先責任者を識別します。
テスト メソッドでアカウントと連絡先レコードを作成しました。
アカウントと連絡先レコードをリンク/関連付けする必要があります。(連絡先は私が作成したアカウントで機能します。ID と関係があることはわかっています。accountId を書き込むことはできません。
アカウント変数を作成し、それを contactID に割り当てる必要があると思います...コード例を試しましたが、機能しません。Salesforce は、あなたができない連絡先 ID を書き込もうとしていると考えています。具体的には:
Contact testContact = new Contact();
testContact.firstName='Jack';
testContact.lastName='Dell';
AccountID = testAccount.id;
アカウント変数を作成するにはどうすればよいですか?
sendBirthdayEmail();
別の問題は、私のメソッドを呼び出すことです。
testContact.sendBirthdayEmail(); の書き込み 私の電子メールメソッドを呼び出しません。代わりに、「エラー: コンパイル エラー: SObject Contact のフィールド ContactID が無効です」というエラー メッセージが表示されます。
テスト メソッドが sendBirthdayEmail メソッドを認識しないのはなぜですか? テスト メソッドはクラス内の他のメソッドを認識しませんか?
global class BirthdayName implements Schedulable{
global void execute (SchedulableContext ctx)
{
sendBirthdayEmail();
}
public void sendBirthdayEmail()
{
for(Contact con : [SELECT name, Id, Birthdate FROM Contact WHERE Next_Birthday__c = : system.Today().addDays(2) AND Account.Name = 'Our Company'])
{
String conId = con.Id;
String conName = con.name;
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setTargetObjectId('005J0000000JWYx');
mail.setsubject('Birthday Reminder');
mail.setHtmlBody('This is a scheduler-generated email to notify you that the birthday of Name: <b> ' + con.name + ' </b> is in two days. Birthdate of: ' + con.Birthdate + '. Please wish them a happy Birthday.');
mail.setSaveAsActivity(false);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail });
}
}
static testMethod void myTestBirthday() {
//create the required test data needed for the test scenario
//In this case, I need to create a new contact, with the account name of Our Company and has a birthday 2 days away
Account testAccount = new Account(name='Our Company');
insert testAccount;
// creating new contact
Contact testContact = new Contact();
testContact.firstName='Jack';
testContact.lastName='Dell';
// TRYING to make this contact associated with the account by setting the account id of the account I just created to the contact
AccountID = testAccount.id;
// inserting test contact
insert testContact;
testContact.birthdate=system.Today().addDays(2);
update testContact;
testContact.sendBirthdayEmail();
}
}
助けてください。ドキュメントを読み、メッセージ ボードを検索しましたが、まだ立ち往生しています。お世話になりました!