Deno 斷言

2020-06-24 17:06 更新

為了幫助開發(fā)者編寫測試,Deno 標(biāo)準(zhǔn)庫提供了內(nèi)置的 斷言模塊,可從

  1. https://deno.land/std/testing/asserts.ts 導(dǎo)入。
  2. import { assert } from "https://deno.land/std/testing/asserts.ts";
  3. Deno.test("Hello Test", () => {
  4. assert("Hello");
  5. });

斷言模塊提供了九個斷言函數(shù):

  • assert(expr: unknown, msg = ""): asserts expr
  • assertEquals(actual: unknown, expected: unknown, msg?: string): void
  • assertNotEquals(actual: unknown, expected: unknown, msg?: string): void
  • assertStrictEquals(actual: unknown, expected: unknown, msg?: string): void
  • assertStringContains(actual: string, expected: string, msg?: string): void
  • assertArrayContains(actual: unknown[], expected: unknown[], msg?: string): void
  • assertMatch(actual: string, expected: RegExp, msg?: string): void
  • assertThrows(fn: () => void, ErrorClass?: Constructor, msgIncludes = "", msg?: string): Error
  • assertThrowsAsync(fn: () => Promise<void>, ErrorClass?: Constructor, msgIncludes = "", msg?: string): Promise<Error>

斷言

assert 方法是一個簡單的“真值”斷言,可用于斷言任何可以推導(dǎo)為 true 的值。

  1. Deno.test("Test Assert", () => {
  2. assert(1);
  3. assert("Hello");
  4. assert(true);
  5. });

相等性

可用的相等性斷言有三個:assertEquals(),assertNotEquals() 和 assertStrictEquals(). assertEquals() 和 assertNotEquals() 方法提供常規(guī)的相等性檢查,并能夠斷言基本類型和對象的相等性。

  1. Deno.test("Test Assert Equals", () => {
  2. assertEquals(1, 1);
  3. assertEquals("Hello", "Hello");
  4. assertEquals(true, true);
  5. assertEquals(undefined, undefined);
  6. assertEquals(null, null);
  7. assertEquals(new Date(), new Date());
  8. assertEquals(new RegExp("abc"), new RegExp("abc"));
  9. class Foo {}
  10. const foo1 = new Foo();
  11. const foo2 = new Foo();
  12. assertEquals(foo1, foo2);
  13. });
  14. Deno.test("Test Assert Not Equals", () => {
  15. assertNotEquals(1, 2);
  16. assertNotEquals("Hello", "World");
  17. assertNotEquals(true, false);
  18. assertNotEquals(undefined, "");
  19. assertNotEquals(new Date(), Date.now());
  20. assertNotEquals(new RegExp("abc"), new RegExp("def"));
  21. });

assertStrictEquals() 基于 === 運(yùn)算符提供了更簡單、嚴(yán)格的檢查。相同對象的兩個實(shí)例不會判斷為相等,因?yàn)橐貌幌嗤?/p>

  1. Deno.test("Test Assert Strict Equals", () => {
  2. assertStrictEquals(1, 1);
  3. assertStrictEquals("Hello", "Hello");
  4. assertStrictEquals(true, true);
  5. assertStrictEquals(undefined, undefined);
  6. });

assertStrictEquals() 最好用于精確判斷兩個基本類型的相等性。

自定義消息

Deno 的每個內(nèi)置斷言都允許您覆蓋標(biāo)準(zhǔn) CLI 錯誤消息。 這個示例將輸出 "Values Don't Match!",而不是標(biāo)準(zhǔn) CLI 錯誤消息。

  1. Deno.test("Test Assert Equal Fail Custom Message", () => {
  2. assertEquals(1, 2, "Values Don't Match!");
  3. });
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號