はじめに
現在、ソフトウェア開発の効率を向上させ、開発の品質を確保するために、単体テストが開発者からますます注目されています。以前は単体テストはサーバーサイドの開発で行われることが多かったのですが、Webプログラミングの分野での分業が徐々に明確になってきて、フロントエンドのJavaScript開発の分野でも単体テストを行うことができるようになりました。フロントエンド開発の品質。
サーバー側の単体テストには、JavaScript にも優れたフレームワークがいくつかありますが、この記事では、簡単な単体テスト フレームワークを段階的に実装していきます。
JS 単体テストには多くの側面がありますが、最も一般的なのはメソッド関数のチェックとブラウザーの互換性チェックです。この記事では主に最初のタイプについて説明します。
この記事で検証した JS コードは、以前に書いた JS の日付書式設定メソッドです。原文はここにあります (C# での使用法に似た JavaScript の日付書式設定関数)。コードは次のとおりです。 >
Date.prototype.toString=function(format){
var time ={};
time.year=this.getFullyear();
time.Tyear=("" time. Year).substr(2); .getMonth() 1 ;
time.TMonth=time.Monthtime.Day=this.getDate(); time.Daytime.Hour=this.getHours();
time.THour=time.Hourtime.hour=time.Hourtime.Thour=time.hourtime.Minute=this.getMinutes();
time.TMinute=time.Minutetime.Second=this.getSeconds() ;
time .TSecond=time.Secondtime.Millisecond=this.getMilliseconds();
if(format!=unknown && format.replace(/s/g,"").length>0){
format=format
.replace(/yyyy/ig,time. Year)
.replace( /yyy/ig,time.Year)
.replace(/yy/ig,time.Tyear)
.replace(/y/ig,time.Tyear)
.replace( /MM/g, time.TMonth)
.replace(/M/g,time.Month)
.replace(/dd/ig,time.TDay)
.replace(/d/ig, time.Day)
.replace(/HH/g,time.THour)
.replace(/H/g,time.Hour)
.replace(/hh/g,time.THour)
.replace( /h/g,time.hour)
.replace(/mm/g,time.TMinute)
.replace(/m/g,time.Minute)
.replace( /ss/ig, time.TSecond)
.replace(/s/ig,time.Second)
.replace(/fff/ig,time.ミリ秒)
.replace(/ff/ig, oNumber.toFixed(2 )*100)
.replace(/f/ig,oNumber.toFixed(1)*10);
}
else{
format=time. Year "-" time.Month "- " time.Day " " time.Hour ":" time.Minute ":" time.Second;
}
戻り値の形式;
このコードは現在存在しません。重大なバグが見つかりました。この記事のテストでは、.replace(/MM/g,time.TMonth) を .replace(/MM/g,time.Month) に変更しました。このエラーは役に立ちません。月が 10 未満の場合。2 桁で月を表します。
優れた設計はリファクタリングされるという格言がありますが、この記事でも同様です。最も単純な設計から始めましょう。
最初のバージョン: オリジナルのアラートを使用します
最初のバージョンとしては、非常に面倒なので、アラートを直接使用してチェックします。 完全なコードは次のとおりです。
コードをコピー