「NodeJS開発教程7-AsssertとConsolie」

5500 ワード

今日は、NodeJSを採用して、私たちに提供されたConsolieコンソールプリント出力とAsssertユニットテストの断言機能を提供します.まずConsolieについてですが、nodejsが提供してくれたconsolieはブラウザAPIにおけるconsoneの強化版です.いくつかの基礎アプリケーションとブラウザの使い方が一致しているほか、さらに強化されたインターフェース方法を提供してくれました.
一、consone(コンソール出力)
ソロは導入しなくてもいいです.導入しないのはnodejs全体のソロオブジェクトです.
var console=require('console');
  • 基本データタイプはconsone.log()の一般ログを印刷して、consone.warn()警告ログ、sone.error()エラーログの使い方はほぼ同じです.ちなみに's'、'%d'、'%f'フォーマット出力です.
  • //    
    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
    
  • jsonオブジェクトタイプは、jsonオブジェクトを印刷します.
    var student={name:"July",age:22,hasbooks:["《nodejs  》","《webpack  》","《vue  》"]};
    console.log("  json  :%j",student);
    
        :
    
      json  :{"name":"July","age":22,"hasbooks":["《nodejs  》","《webpack  》","《vue  》"]}
    
  • JS変数の印刷は、変数の値を直接印刷するために$
    //    【  :             ~       】
    var title="《NodeJS  》";
    var price=58.8;
    console.log(`    :     ${title},     ${price} `);
    
        :
    
        :     《NodeJS  》,     58.8 
    
  • パケット印刷は時々ロゴ情報のセットを出力する必要があります.nodejsはこのような機能を提供してくれます.consone.group(「グループの名前」)を使用してグループの印刷を開始し、consone.group End()---グループの印刷を終了します.開始と終了の両方に印刷されたメッセージは2つのスペースに縮小されますので、確認しやすいです.
  • //    
    console.group("    ");
    console.log("Hello1");
    console.log("Hello2");
    console.log("Hello3");
    console.groupEnd();
    
        :
    
        
      Hello1
      Hello2
      Hello3
    
  • カスタム出力logger私達はログを出力する時、コンソールに印刷の情報を表示したり、ログ情報をローカルディスクファイルに保存したりする必要があります.私達はnodejsが提供するfsモジュールと結合して、カスタムの簡単なloggerを作成します.
  • //     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        。
    
    
  • プリントスタック情報は、consone.trace(「スタック情報」)を使用して現在のスタック情報を印刷しています.この機能は非常に有用で、私たち自身の異常スタックやメッセージスタックを出力することができます.
  • //     
    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
  • 実行時間nodejsのもう一つの有用な機能をプリントアウトして、consone.time(「マーク名」)を使用します.今回の統計実行時間の開始フラグは、consone.timeEnd(「マーク名」)を使用します.最終的には、現在実行中に消費されているcpu時間をサブミリ秒で出力します.
  • //        
    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");
    
  • astert.equal(actual、expected)一般試験
  • これはactualとexpectedの2つの値が等しいかどうかを比較します.もし同じように実行して通過しないなら、AsertionErr異常を投げてアプリケーションを終了します.
    //       (==)   actual     expected       。
    assert.equal("abc","abc");//  
    console.log("---equal  abc abc  ");
    assert.equal({ a: 1 }, { a: "1" });//   【    !=】
    
        :【---equal  abc abc  】      AssertionError  
    
  • astert.deepEqual深さ試験
  • 二つの値が等しいかどうかを比較します.次の例とequalの違いを見てください.
    assert.deepEqual({ a: 1 }, { a: "1" });//  
    console.log("---    1=='1'  ");
    
        :【---    1=='1'  】
    
  • astert.deep StrictEqualの深さは厳しくテストします.これとastert.deepEqualの違いはテスト対象の原型ができます.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モジュールの常用機能を整理しました.お好きになってください.