Trailhead Apex 単体テストを作成するサンプル

環境
Salesforce Apex

課題
単純な Apex クラスの単体テストを作成する
日付が適切な範囲内かどうかをテストし、範囲外の場合は範囲内の月末日を返す単純な Apex クラスを作成してインストールします。クラスのコードは ハンズオン Challenge 準備セクションからコピーします。その後でコードカバー率 100% を達成する単体テストを作成します。
Apex クラスを作成する:
名前: VerifyDate
コード: 上記のハンズオン Challenge の「準備」セクションからコピー
単体テストを別のテストクラスに配置する:
名前: TestVerifyDate
目標: コードカバー率 100%
テストクラスを少なくとも 1 回実行する

1.Apex クラスを作成する

public class VerifyDate {
  //2つの日付に対する潜在的なチェックを処理する方法
  public static Date CheckDates(Date date1, Date date2) {
    //日付2が日付1の次の30日以内であれば、日付2を使用します。それ以外の場合は月末を使用します。
    if(DateWithin30Days(date1,date2)) {
      return date2;
    } else {
      return SetEndOfMonthDate(date1);
    }
  }
  //日付が日付 1 から 30 日以内であるかどうかを確認する方法v
  private static Boolean DateWithin30Days(Date date1, Date date2) {
    //date2が過去かどうか確認する
    if( date2 < date1) { return false; }
    //日付2が日付1から30日以内(>=)であることを確認する
    Date date30Days = date1.addDays(30); //create a date 30 days away from date1
    if( date2 >= date30Days ) { return false; }
    else { return true; }
  }
  //指定された日付の月の末日を返すメソッド
  private static Date SetEndOfMonthDate(Date date1) {
    Integer totalDays = Date.daysInMonth(date1.year(), date1.month());
    Date lastDay = Date.newInstance(date1.year(), date1.month(), totalDays);
    return lastDay;
  }
}

2.単体テストのクラスを作成します

@isTest
public class TestVerifyDate  {
   @isTest static void CheckDatesPast() {
       Date pri = VerifyDate.CheckDates(Date.TODAY() ,Date.TODAY().addDays(-5));
       System.assertEquals(Date.newInstance(2023, 12, 31), pri);
   }
       @isTest static void CheckDatesFurture5() {
       Date pri = VerifyDate.CheckDates(Date.TODAY() ,Date.TODAY().addDays(5));
       System.assertEquals(Date.newInstance(2023, 12, 31), pri);
   }
       @isTest static void CheckDatesFurture31() {
       Date pri = VerifyDate.CheckDates(Date.TODAY() ,Date.TODAY().addDays(31));
       System.assertEquals(Date.TODAY().addDays(31), pri);
   }
}

 

IT

Posted by arkgame