為了幫助開發(fā)者編寫測試,Deno 標(biāo)準(zhǔn)庫提供了內(nèi)置的 斷言模塊,可從
https://deno.land/std/testing/asserts.ts 導(dǎo)入。
import { assert } from "https://deno.land/std/testing/asserts.ts";
Deno.test("Hello Test", () => {
assert("Hello");
});
斷言模塊提供了九個斷言函數(shù):
assert 方法是一個簡單的“真值”斷言,可用于斷言任何可以推導(dǎo)為 true 的值。
Deno.test("Test Assert", () => {
assert(1);
assert("Hello");
assert(true);
});
可用的相等性斷言有三個:assertEquals(),assertNotEquals() 和 assertStrictEquals(). assertEquals() 和 assertNotEquals() 方法提供常規(guī)的相等性檢查,并能夠斷言基本類型和對象的相等性。
Deno.test("Test Assert Equals", () => {
assertEquals(1, 1);
assertEquals("Hello", "Hello");
assertEquals(true, true);
assertEquals(undefined, undefined);
assertEquals(null, null);
assertEquals(new Date(), new Date());
assertEquals(new RegExp("abc"), new RegExp("abc"));
class Foo {}
const foo1 = new Foo();
const foo2 = new Foo();
assertEquals(foo1, foo2);
});
Deno.test("Test Assert Not Equals", () => {
assertNotEquals(1, 2);
assertNotEquals("Hello", "World");
assertNotEquals(true, false);
assertNotEquals(undefined, "");
assertNotEquals(new Date(), Date.now());
assertNotEquals(new RegExp("abc"), new RegExp("def"));
});
assertStrictEquals() 基于 === 運(yùn)算符提供了更簡單、嚴(yán)格的檢查。相同對象的兩個實(shí)例不會判斷為相等,因?yàn)橐貌幌嗤?/p>
Deno.test("Test Assert Strict Equals", () => {
assertStrictEquals(1, 1);
assertStrictEquals("Hello", "Hello");
assertStrictEquals(true, true);
assertStrictEquals(undefined, undefined);
});
assertStrictEquals() 最好用于精確判斷兩個基本類型的相等性。
Deno 的每個內(nèi)置斷言都允許您覆蓋標(biāo)準(zhǔn) CLI 錯誤消息。 這個示例將輸出 "Values Don't Match!",而不是標(biāo)準(zhǔn) CLI 錯誤消息。
Deno.test("Test Assert Equal Fail Custom Message", () => {
assertEquals(1, 2, "Values Don't Match!");
});
更多建議: