国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【譯文】Nodejs官方文檔(Part 3 斷言測試)

XFLY / 3160人閱讀

摘要:斷言穩定級別鎖定斷言模塊提供了一個簡單斷言集,用于測試不變量。但是要注意,斷言模塊并不是一個測試框架,也不是一個通用的斷言庫。斷言模塊的已經鎖定。版本加入測試深且強不等,與對立。版本加入測試是否為真。

斷言

穩定級別:3 - 鎖定

斷言模塊提供了一個簡單斷言集,用于測試不變量。本模塊原本是Node.js的內部使用,但也可以通過require("assert")在應用中使用。但是要注意,斷言模塊并不是一個測試框架,也不是一個通用的斷言庫。

斷言模塊的API已經鎖定。意味著在未來,本模塊應用和暴露的方法都不會有任何修改或者增加。

assert(value[, message])

v0.5.9版本加入

是assert.ok()的alias。

const assert = require("assert");

assert(true);  // OK
assert(1);     // OK
assert(false);
  // throws "AssertionError: false == true"
assert(0);
  // throws "AssertionError: 0 == true"
assert(false, "it"s false");
  // throws "AssertionError: it"s false"
assert.deepEqual(actual, expected[, message])

v0.1.21版本加入

用于測試 actualexpected的深等于。基本數據類型的值將會用等價運算符( == )作比較。

本方法只適用于可枚舉且返回自身的屬性。 deepEqual()不能用于測試對象原型、附加符號、不可枚舉的屬性。這一點可能會導致一些意想不到的結果。比如,下面的例子不會拋出AssertionError,因為Error對象的屬性是不可枚舉的。

// WARNING: This does not throw an AssertionError!
assert.deepEqual(Error("a"), Error("b"));

”深”等于意味著:傳入對象的子對象的可枚舉且返回自身的屬性也會被比較:

const assert = require("assert");

const obj1 = {
  a : {
    b : 1
  }
};
const obj2 = {
  a : {
    b : 2
  }
};
const obj3 = {
  a : {
    b : 1
  }
};
const obj4 = Object.create(obj1);

assert.deepEqual(obj1, obj1);
  // OK, 一個對象和自身肯定是相等的

assert.deepEqual(obj1, obj2);
  // AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } }
  // b的值不同

assert.deepEqual(obj1, obj3);
  // OK, 兩個對象是相等的

assert.deepEqual(obj1, obj4);
  // AssertionError: { a: { b: 1 } } deepEqual {}
  // 對象原型不能用于比較

如果傳入的兩個參數不相等,將會拋出一個AssertionError,它會自帶一個message屬性,可由message傳參設置。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

assert.deepStrictEqual(actual, expected[, message])

v1.2.0版本加入

assert.deepEqual()只有兩個區別。第一,基本數據類型的值是用強等價運算符(===)來比較的。第二,對象之間的比較要求它們的原型(prototype)也一致。

如果傳入的兩個參數不相等,將會拋出一個AssertionError,它會自帶一個message屬性,可由message傳參設置。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

assert.doesNotThrow(block, error)

v0.1.21版本加入

斷言block方法不會拋出錯誤,關于拋出(throw)可參加assert.throw()了解更多細節。

assert.doesNotThrow()被調用的時候,它會立即調用block方法。

如果有錯誤拋出,并且錯誤類型與傳參中的錯誤類型一致,此方法將拋出一個AssertionError。如果錯誤類型不一致,或者傳參error未定義,那么錯誤會被回傳給調用者。

比如下例中,將會拋出一個TypeError,因為錯誤類型不一致。

assert.doesNotThrow(
  () => {
    throw new TypeError("Wrong value");
  },
  SyntaxError
);

但下例中就會拋出AssertionError并附帶message“Got unwanted exception (TypeError)..”。

assert.doesNotThrow(
  () => {
    throw new TypeError("Wrong value");
  },
  TypeError
);

當有AssertionError拋出的時候,如果傳參中定義了message參數,那么它將會被附到AssertionErrormessage后面。

assert.doesNotThrow(
  () => {
    throw new TypeError("Wrong value");
  },
  TypeError,
  "Whoops"
);
// Throws: AssertionError: Got unwanted exception (TypeError). Whoops
assert.equal(actual, expected[, message])

v0.1.21版本加入

用等價運算符(==)比較actualexpected的淺等于。

const assert = require("assert");

assert.equal(1, 1);
  // OK, 1 == 1
assert.equal(1, "1");
  // OK, 1 == "1"

assert.equal(1, 2);
  // AssertionError: 1 == 2
assert.equal({a: {b: 1}}, {a: {b: 1}});
  //AssertionError: { a: { b: 1 } } == { a: { b: 1 } }

如果傳入的兩個參數不相等,將會拋出一個AssertionError,它會自帶一個message屬性,可由message傳參設置。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

assert.fail(actual, expected, message, operator)

v0.1.21版本加入

拋出AssertionError。如果message也就是比較結果為假,那么錯誤信息輸出actualexpected的值,用傳入的運算符隔開;如果結果為真,錯誤信息輸出傳入的message

const assert = require("assert");

assert.fail(1, 2, undefined, ">");
  // AssertionError: 1 > 2

assert.fail(1, 2, "whoops", ">");
  // AssertionError: whoops
assert.ifError(value)

v0.1.97版本加入

如果value為真則輸出value值。適合用于測試回調方法中的error參數。

const assert = require("assert");

assert.ifError(0); // OK
assert.ifError(1); // Throws 1
assert.ifError("error"); // Throws "error"
assert.ifError(new Error()); // Throws Error
assert.notDeepEqual(actual, expected[, message])

v0.1.21版本加入

測試深不等,與assert.deepEqual()對立。

const assert = require("assert");

const obj1 = {
  a : {
    b : 1
  }
};
const obj2 = {
  a : {
    b : 2
  }
};
const obj3 = {
  a : {
    b : 1
  }
};
const obj4 = Object.create(obj1);

assert.notDeepEqual(obj1, obj1);
  // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }

assert.notDeepEqual(obj1, obj2);
  // OK, obj1 and obj2 are not deeply equal

assert.notDeepEqual(obj1, obj3);
  // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }

assert.notDeepEqual(obj1, obj4);
  // OK, obj1 and obj2 are not deeply equal

如果傳入的兩個參數深相等,將會拋出一個AssertionError,它會自帶一個message屬性,可由message傳參設置。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

assert.notDeepStrictEqual(actual, expected[, message])

v1.2.0版本加入

測試深且強不等,與assert.deepStrictEqual()對立。

const assert = require("assert");

assert.notDeepEqual({a:1}, {a:"1"});
  // AssertionError: { a: 1 } notDeepEqual { a: "1" }

assert.notDeepStrictEqual({a:1}, {a:"1"});
  // OK

如果傳入的兩個參數深且強相等,將會拋出一個AssertionError,它會自帶一個message屬性,可由message傳參設置。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

assert.notEqual(actual, expected[, message])

v0.1.21版本加入

用不等價運算符(!=)測試淺不等。

const assert = require("assert");

assert.notEqual(1, 2);
  // OK

assert.notEqual(1, 1);
  // AssertionError: 1 != 1

assert.notEqual(1, "1");
  // AssertionError: 1 != "1"

如果傳入的兩個參數淺相等,將會拋出一個AssertionError,它會自帶一個message屬性,可由message傳參設置。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

assert.notStrictEqual(actual, expected[, message])

v0.1.21版本加入

用強不等運算符(!==)測試強不等。

const assert = require("assert");

assert.notStrictEqual(1, 2);
  // OK

assert.notStrictEqual(1, 1);
  // AssertionError: 1 != 1

assert.notStrictEqual(1, "1");
  // OK

如果傳入的兩個參數強等,將會拋出一個AssertionError,它會自帶一個message屬性,可由message傳參設置。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

assert.ok(value[, message])

v0.1.21版本加入

測試value是否為真。其實與assert.equal(!!value, true, message)等價。

如果value不為真,拋出AssertionError,附帶message信息與傳入message一致。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

const assert = require("assert");

assert.ok(true);  // OK
assert.ok(1);     // OK
assert.ok(false);
  // throws "AssertionError: false == true"
assert.ok(0);
  // throws "AssertionError: 0 == true"
assert.ok(false, "it"s false");
  // throws "AssertionError: it"s false"
assert.strictEqual(actual, expected[, message])

v0.1.21版本加入

用強等運算符(===)測試傳參是否強等于。

const assert = require("assert");

assert.strictEqual(1, 2);
  // AssertionError: 1 === 2

assert.strictEqual(1, 1);
  // OK

assert.strictEqual(1, "1");
  // AssertionError: 1 === "1"

如果傳入的兩個參數不是強等,將會拋出一個AssertionError,它會自帶一個message屬性,可由message傳參設置。如果message傳參是undefined,就會給它賦值一個默認的錯誤信息。

assert.throws(block, error)

v0.1.21版本加入

期望block方法拋出錯誤。

如果傳入自定義error,可以是構造函數、正則表達式或驗證函數。

如果傳入message但沒有錯誤拋出,message將是AssertionError附帶的。

用構造函數驗證實例:

assert.throws(
  () => {
    throw new Error("Wrong value");
  },
  Error
);

用正則表達式驗證error:

assert.throws(
  () => {
    throw new Error("Wrong value");
  },
  /value/
);

自定義error驗證:

assert.throws(
  () => {
    throw new Error("Wrong value");
  },
  function(err) {
    if ( (err instanceof Error) && /value/.test(err) ) {
      return true;
    }
  },
  "unexpected error"
);

請注意error參數可以為字符串。如果第二個傳參是個字符串,那么error參數將會被忽略,直接用這個字符串作為輸出的message。但這可能會導致很容易被忽略的問題:

// THIS IS A MISTAKE! DO NOT DO THIS!
assert.throws(myFunction, "missing foo", "did not throw with expected message");

// Do this instead.
assert.throws(myFunction, /missing foo/, "did not throw with expected message");
全文目錄

請查看:全文目錄

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/86557.html

相關文章

  • 譯文】Node.js官方文檔Part 1 關于文檔

    摘要:關于本文檔本文檔的目的,是全面地解釋的,即可作為參考文檔,同時也包含了概念的講解。但有的全新的實驗性的,或者存在危險性的部分則會被重新設計。穩定級別鎖定只會有安全性能或相關的修復。不接受對此做修改的建議。 關于本文檔 本文檔的目的,是全面地解釋Node.js的API,即可作為參考文檔,同時也包含了概念的講解。每個章節都描述了一個內置模塊或一個高階概念(high-level concep...

    svtter 評論0 收藏0
  • 譯文】Node.js官方文檔(前言&目錄)

    摘要:畢竟官方文檔才是未經提煉的純技術點,讀書不能只讀二手書。目前網上能找到的中文文檔基本都是基于的,但截至此文發布,最新的穩定版都已經是了。翻譯過程中主要參考官方英文文檔,以及極客學院的官方文檔中文翻譯。 前言 相信很多開發者和我一樣,在學習一門技術的時候,通過網上的各種教程和視頻入門之后會發現自己遇到一個上升瓶頸。造成這個瓶頸的很大一部分原因,我認為是進階教程的知識點過于分散,同時高質量...

    tinna 評論0 收藏0
  • 譯文】Node.js官方文檔Part 2 用法與示例)

    摘要:用法具體的參數及腳本運行方式,請參考命令行工具章節。示例用寫的一個返回的服務器示例要運行此服務器,將上面所示代碼放入文件,并用執行它本文檔中所有的示例均可以類似方式運行。全文目錄請查看全文目錄 用法 node [options] [v8 options] [script.js | -e script] [arguments] 具體的option參數及腳本運行方式,請參考命令行工具章節。...

    tianyu 評論0 收藏0
  • 使用 AVA 做自動化測試

    摘要:單元測試,測試一個簡單的組件。接口測試,用戶信息接口測試。學習借鑒,一些使用做測試的開源項目。這里使用到的內置斷言斷言結果值等于我們想要的預期值,則測試通過。在里放入一個函數,函數自動執行,里面執行的結果必須拋出錯誤,則測試通過。 目錄 1、為什么選擇 AVA ?2、API 概覽。3、準備工作。4、單元測試,測試一個簡單的工具函數。5、使用 Promise、Async/await、Ob...

    Cruise_Chan 評論0 收藏0
  • 測試你的前端代碼 - part2(單元測試

    摘要:單元測試上一節有討論過,單元測試就是以代碼單元為單位進行測試,代碼單元可以是一個函數,一個模塊,或者一個類。單元測試是最容易理解也最容易實現的測試方式。在寫單元測試的時候,盡量將你的單元測試獨立出來,不要幾個單元互相引用。 showImg(https://segmentfault.com/img/remote/1460000008823416?w=997&h=350); 本文作者:G...

    daydream 評論0 收藏0

發表評論

0條評論

XFLY

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<