<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Typescript 測試驅(qū)動開發(fā) TDD (9)

      匹配器 (Matchers)

       

      1. toBe
      Jest 使用所謂的匹配器來將測試中的預期值與接收到的值進行匹配。讓我們快速看一下其中一些匹配器,如下所示:

      1 it("should match with toBe", () => {
      2     expect(1).toBe(2);
      3 });

      在這里,我們使用toBe匹配器來測試值1是否與值2相同。顯然,這個測試將會失敗,并顯示以下消息:

      expect(received).toBe(expected)   // Object.is equality
      Expected: 2
      Received: 1

      在這里,我們可以看到Jest期望值為2,但實際接收到的是1。有趣的是,這條消息中toBe匹配器使用了Object.is相等性。這意味著以下測試將通過:

      1 it("should match with toBe using assignment", () => {
      2    let objA = {id: 1};
      3    let objB = objA;
      4    expect(objA).toBe(objB);
      5 });

      在這里,我們正在創(chuàng)建一個名為objA的對象實例,并將其值分配給另一個名為objB的變量。這意味著變量objA和objB都指向內(nèi)存中的同一個對象。我們可以嘗試使用toBe匹配器來比較兩個不同的對象,如下所示:

      1 it("should match with toBe", () => {
      2     let objA = {id: 1};
      3     let objB = {id: 1};
      4     expect(objA).toBe(objB);
      5 });

      在這里,objA和objB具有相同的結(jié)構(gòu),并且它們具有相同的值,但它們不是內(nèi)存中的同一個對象。這個測試將產(chǎn)生以下測試失?。?/span>

      expect(received).toBe(expected)   //Object.is equality
      If it should pass with deep equality, replace "toBe" with
      "toStrictEqual"
      Expected: {"id": 1}
      Received: serializes to the same string

       

      2. toEqual

      在這里,我們可以看到我們的測試失敗了,因為objA和objB是兩個不同的對象。Jest的錯誤輸出也建議我們將toBe替換為toStrictEqual。然而,我們可以使用toEqual匹配器來達到相同的結(jié)果,如下所示:

      1 it("should match with toEquala", () => {
      2     let objA = {id: 1};
      3     let objB = {id: 1};
      4     expect(objA).toEqual(objB);
      5 });

      在這里,我們的測試通過了,因為toEqual匹配器會正確地將兩個對象的形狀和值解釋為相等。

       

      3. toContain和 toContainEqual
      Jest還提供了許多變體的toContain匹配器,用于測試一個值是否包含在另一個值中,如下所示:

      1 it("should contain a value", () => {
      2     expect("abcde").toContain("cde");
      3 });

      在這里,我們的測試期望值 "abcde" 包含值 "cde"。我們也可以將這個概念應用到數(shù)組上,如下所示:

      1 it("should contain an array item", () => {
      2    let objArray = [
      3        {id: 1},
      4        {id: 2}
      5    ];
      6    
      7    expect(objArray).toContainEqual({id: 2}) ;
      8 });

      在這里,我們有一個名為objArray的對象數(shù)組,并且我們的測試期望objArray數(shù)組應該包含值{id: 2}。請注意,在這種情況下,我們使用了toContainEqual匹配器,用于檢查數(shù)組是否包含特定項。

       

      4. not

      請注意,使用not屬性可以對任何期望進行反轉(zhuǎn),如下所示:

      1 it("should not contain a value", () => {
      2    expect("abcde").not.toContain("123");
      3 });

      在這里,我們期望值 "abcde" 不包含值 "123"。
      Jest的所有匹配器都可以使用not屬性作為前綴,以測試不相等性。

      5. toThowError
      匹配器還具有在拋出錯誤時進行測試的能力。考慮以下函數(shù):

      1 function throwError() {
      2    throw new Error("this is an error");
      3 }

      在這里,我們有一個名為throwsError的函數(shù),它會拋出一條帶有消息"this is an error"的錯誤。我們可以編寫一個測試來驗證是否會拋出該錯誤,如下所示:

      1 it("should throw an error", () => {
      2    expect(
      3        () => {throwError() }
      4    ).toThrowError(new Error("this is an error"));
      5 });

      在這里,我們有一個使用名為 toThrowError 的匹配器的測試,用于測試函數(shù) throwsError 是否確實拋出了錯誤,并且錯誤消息是正確的。
      請注意,在 expect 中我們提供了一個調(diào)用 throwsError 函數(shù)的匿名函數(shù)。當測試是否會拋出錯誤時,我們必須將調(diào)用拋出錯誤的函數(shù)包裝在一個匿名函數(shù)中,否則測試本身將無法正確執(zhí)行。

       

      posted @ 2023-09-21 14:08  TonysDad  閱讀(80)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产永久免费高清在线| 久久狠狠高潮亚洲精品| 都兰县| 黑人猛精品一区二区三区| 国产视频一区二区三区麻豆| 国产成人精品aa毛片| 亚洲综合色网一区二区三区| 精品一区二区亚洲国产| 亚洲男人第一无码av网站| 中国国产免费毛卡片| 极品少妇无套内射视频| 国产一区二区三区高清在线观看| 中文字幕国产精品第一页| 精品人妻午夜福利一区二区| 日韩人妻无码中文字幕视频| 深夜宅男福利免费在线观看| 国产免费踩踏调教视频| 国产成人亚洲综合图区| 久久国产精品第一区二区| 最新的国产成人精品2020| 蜜桃一区二区三区免费看| 亚洲av午夜成人片| 久久一日本综合色鬼综合色 | 色综合色综合色综合久久| 深夜福利资源在线观看| 久久人人爽人人爽人人av| 久久国产乱子精品免费女| 激情内射亚州一区二区三区爱妻| 中文成人无字幕乱码精品区| 99国产欧美另类久久久精品| 在线精品国精品国产尤物| 久久天天躁狠狠躁夜夜躁2o2o | 人妻内射一区二区在线视频| 男人的天堂av社区在线| 国产免费一区二区三区在线观看| 99精品视频在线观看婷婷| 久久精品夜色国产亚洲av| 精品一区二区三区波多野结衣 | 成人午夜激情在线观看| 国产MD视频一区二区三区| 国产精品综合一区二区三区|