「NodeJS開発教程7-AsssertとConsolie」
5500 ワード
今日は、NodeJSを採用して、私たちに提供されたConsolieコンソールプリント出力とAsssertユニットテストの断言機能を提供します.まずConsolieについてですが、nodejsが提供してくれたconsolieはブラウザAPIにおけるconsoneの強化版です.いくつかの基礎アプリケーションとブラウザの使い方が一致しているほか、さらに強化されたインターフェース方法を提供してくれました.
一、consone(コンソール出力)
ソロは導入しなくてもいいです.導入しないのはnodejs全体のソロオブジェクトです.基本データタイプはconsone.log()の一般ログを印刷して、consone.warn()警告ログ、sone.error()エラーログの使い方はほぼ同じです.ちなみに's'、'%d'、'%f'フォーマット出力です. は、複数のメッセージを印刷し、最初のパラメータが文字列をフォーマットしていない場合、複数のメッセージをカンマ区切りでつなぎ合わせて印刷を出力する. jsonオブジェクトタイプは、jsonオブジェクトを印刷します. JS変数の印刷は、変数の値を直接印刷するために$ パケット印刷は時々ロゴ情報のセットを出力する必要があります.nodejsはこのような機能を提供してくれます.consone.group(「グループの名前」)を使用してグループの印刷を開始し、consone.group End()---グループの印刷を終了します.開始と終了の両方に印刷されたメッセージは2つのスペースに縮小されますので、確認しやすいです. カスタム出力logger私達はログを出力する時、コンソールに印刷の情報を表示したり、ログ情報をローカルディスクファイルに保存したりする必要があります.私達はnodejsが提供するfsモジュールと結合して、カスタムの簡単なloggerを作成します. プリントスタック情報は、consone.trace(「スタック情報」)を使用して現在のスタック情報を印刷しています.この機能は非常に有用で、私たち自身の異常スタックやメッセージスタックを出力することができます. 実行時間nodejsのもう一つの有用な機能をプリントアウトして、consone.time(「マーク名」)を使用します.今回の統計実行時間の開始フラグは、consone.timeEnd(「マーク名」)を使用します.最終的には、現在実行中に消費されているcpu時間をサブミリ秒で出力します.
次に、nodejsが提供するassertionErrモジュールを見に来ました.これを使ってユニットテストをします.機能テストをしないとテストができます.まずは導入します. astert.equal(actual、expected)一般試験 これはactualとexpectedの2つの値が等しいかどうかを比較します.もし同じように実行して通過しないなら、AsertionErr異常を投げてアプリケーションを終了します. astert.deepEqual深さ試験 二つの値が等しいかどうかを比較します.次の例とequalの違いを見てください. astert.deep StrictEqualの深さは厳しくテストします.これとastert.deepEqualの違いはテスト対象の原型ができます. 元の値は、合同演算子( オブジェクトのプロトタイプもフル演算子で比較します. オブジェクトのタイプラベルは同じであることが要求されます. が[対象包装器][]を比較した場合、その対象と内部の値は同じであることが要求されます.
一、consone(コンソール出力)
ソロは導入しなくてもいいです.導入しないのはnodejs全体のソロオブジェクトです.
var console=require('console');
//
console.log(" %s ","( )");//
console.warn(" %d",250);//
console.error(" %f",88.88);//
:
( )
250
88.88
// ( )
console.log(" "," 2"," 3"," 4");
console.log(2,8,15,25);
:
2 3 4
2 8 15 25
var student={name:"July",age:22,hasbooks:["《nodejs 》","《webpack 》","《vue 》"]};
console.log(" json :%j",student);
:
json :{"name":"July","age":22,"hasbooks":["《nodejs 》","《webpack 》","《vue 》"]}
// 【 : ~ 】
var title="《NodeJS 》";
var price=58.8;
console.log(` : ${title}, ${price} `);
:
: 《NodeJS 》, 58.8
//
console.group(" ");
console.log("Hello1");
console.log("Hello2");
console.log("Hello3");
console.groupEnd();
:
Hello1
Hello2
Hello3
// logger
const { Console } = require('console');
var fs=require("fs");
// log
var ouput=fs.createWriteStream("./info.log",);
var erroroutput=fs.createWriteStream("./error.log");
var logger=new Console(ouput,erroroutput);
// logger
logger.log(" logger ");
logger.error("logger ");
logger.log(" 2");
console.log(" logger ");
info.log error.log , log 。
//
tracemain();
function tracemain()
{
console.log("tracemain ");
console.trace(" ");
}
:
Trace:
tracemain
at tracemain (F:\Projects
odejs
odejstest-lession\lession7-nodejs-AssertAndConsole\console_test.js:41:13)
at Object. (F:\Projects
odejs
odejstest-lession\lession7-nodejs-AssertAndConsole\console_test.js:36:1)
at Module._compile (module.js:657:14)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Function.Module.runMain (module.js:701:10)
at startup (bootstrap_node.js:194:16)
at bootstrap_node.js:618:3
//
workmain();
function workmain()
{
console.time("workmain ");
var temp=0;
for(var i=0;i<10000000;i++)
{
temp+=10;
}
console.timeEnd("workmain ");
}
:
workmain : 16.180ms
二、アッセンテ(断言)次に、nodejsが提供するassertionErrモジュールを見に来ました.これを使ってユニットテストをします.機能テストをしないとテストができます.まずは導入します.
/* */
var assert=require("assert");
// (==) actual expected 。
assert.equal("abc","abc");//
console.log("---equal abc abc ");
assert.equal({ a: 1 }, { a: "1" });// 【 !=】
:【---equal abc abc 】 AssertionError
assert.deepEqual({ a: 1 }, { a: "1" });//
console.log("--- 1=='1' ");
:【--- 1=='1' 】
assert.deepEqual()
と大体同じですが、違いがあります.===
)を用いて比較される.Set
の値は、Map
のキーとSameValueZeroを用いて比較される.//1
assert.deepEqual({ a: 1 }, { a: "1" });// 【 '==' 】
assert.deepStrictEqual({ a: 1 }, { a: "1" });// 【 '===' 】
//2
// , AssertionError deepEqual ,new Date()
assert.deepEqual(/abc/gi,new Date());//
// ,
assert.deepStrictEqual(obj1,date);//
以上は私達がnodejsに提供したconsosolieモジュールとastertモジュールの常用機能を整理しました.お好きになってください.