見出し画像

【プログラミング】時間変化によるページ切替えのテスト

どうも、ぐぐ(@gu2life)です。

日頃ゲームの話だけだったので、たまにはタメになる話でもしようかなと。

webアプリケーション開発エンジニアなら、一定の時間で切替わるwebページの実装を試みたことがあるのではないでしょうか?

今回はその実装テスト方法の一例を解説しようと思います。
僕のやり方は実装もテストも比較的カンタンなもので、やり方はこれだけではないはずなので、みなさん効率の良い方法で実装してみてください。


Webページ切替えのテスト実装方法

今回はJavaによるWebアプリケーション(jsp)での解説です。
まずjspファイルから。

<!-- test.jsp -->

<!-- 時間により表示/非表示を切り替える箇所 -->
<c:if test="${display_flg}">
    <div class="test">
        <p class="test">このテキストはいつか消えます。</p>
    </div>
</c:if>

作りは単純で"display_flg"がtrueであればテキストを表示するものです。
基礎的な構文説明は省略します。(jspわからなくても単純だからなんとなくわかるっしょ(丸投げ))

続いてサーバ処理。

/* Test.java */

import java.util.Calendar;
import java.text.SimpleDateFormat;

public class Test {
    public boolean display_flg;
    public String test_datetime;

    public final String SWITCH_DATETIME = "20220501000000";

    public static void main (String[] args) {
        test_datetime = getSystemDatetime(test_datetime);
        display_flg = checkSystemDatetime(test_datetime);
    }

    public String getSystemDatetime (String datetime_str) {  // ・・・★
        if (datetime_str == null || datetime_str == "") {
            // システム時刻を取得
            LocalDateTime nowDateTime = LocalDateTime.now();
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
            datetime_str = dtf.format(nowDateTime);
        }
        // テスト時刻入力済みの場合はなにもせずにreturn
        return datetime_str;
    }

    public boolean checkSystemDatetime (String datetime_str) {
        // 指定日以前はtrue
        if (datetime_str < SWITCH_DATETIME) {
            return true;
        }
        return false;
    }
}

注目すべきは★のgetSystemDatetimeメソッドです。
ただシステム時刻を取得するのではなく、test_datetimeがnull or emptyの場合に時刻を取得し、そうでない場合はなにもしない処理としています。

こうすることで、リクエストURLに「?test_datetime=20220401000000」のように指定すれば、URLで指定した時刻であるかのようにページの表示を確認することができます。

※注意:このままでは、本番ページでも「?test_datetime=~~~」と指定すれば動作してしまいます。今回は省略していますが、本来は他にテスト環境でないと動作しないような条件文を実装すべきです。


まとめ

今回は、Webページの時間切替えのテスト方法を解説してみました。

切替え方法はわかるけど、テストのときはサーバ時刻を無理やり変えていたという方、ぜひ試してみてください。

今回は以上です。たまにはこーゆーのも書いてみます。それではノシ

この記事が気に入ったらサポートをしてみませんか?