<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 9.測驗和練習入門 > 原文: [http://exploringjs.com/impatient-js/ch_quizzes-exercises.html](http://exploringjs.com/impatient-js/ch_quizzes-exercises.html) > > 貢獻者:[so-hard](https://github.com/so-hard) 在大多數章節中,都有測驗和練習。它們是付費功能,但可以進行全面預覽。本章介紹如何開始使用它們。 ### 9.1 測驗 安裝: * 下載并解壓縮`impatient-js-quiz.zip` 運行測驗應用程序: * 在 Web 瀏覽器中打開`impatient-js-quiz/index.html` * 你會看到所有測驗的 TOC。 ### 9.2 練習 #### 9.2.1 獲取練習 獲取練習步驟如下: * 下載并解壓縮`impatient-js-code.zip` * 按照`README.md`中的說明進行操作 #### 9.2.2 運行練習 * 練習在本書中的路徑。 * 例如:`exercises/quizzes-exercises/first_module_test.js` * 每個文件的內容: * 第一行包含運行練習的命令。 * 接下來的幾行描述了你要做的事情。 ### 9.3 JavaScript 中的單元測試 本書中的所有練習都是通過測試[ava](https://github.com/avajs/ava)框架 運行的測試。本節簡要介紹。 #### 9.3.1 典型的測試 典型的測試代碼分為兩部分: * 第 1 部分:被測試的代碼。 * 第 2 部分:測試代碼 舉例來說,以下兩個文件: * `id.js`(待測代碼) * `id_test.js`(測試) ##### 9.3.1.1 第 1 部分:被測試的代碼 代碼本身駐留在`id.js`中: ```js export function id(x) { return x; } ``` 劃重點:必須暴露出要要測試的代碼。否則,測試代碼無法訪問它。 ##### 9.3.1.2 第 2 部分:測試 ![](https://img.kancloud.cn/83/6f/836f0345de4fda5b9b81d7038ebb276d.svg) **不要擔心測試的確切細節** 您無需擔心測試的確切細節:它們始終為您實施。因此,您只需要閱讀它們,但不要寫它們。 代碼測試位于`demos/quizzes-exercises/id_test.js`: ```js import test from 'ava'; // (A) import {strict as assert} from 'assert'; // (B) import {id} from './id.mjs'; // (C) test('My test', t => { // (D) assert.equal(id('abc'), 'abc'); // (E) }); ``` 該測試文件的核心是 E 行 - [斷言](ch_assertion-api.html):`assert.equal()`指定`id('abc')`的預期結果是`'abc'`。 至于其他線路: * A 行:導入測試框架。 * B 行:導入斷言庫,AVA * C 行:導入我們要測試的功能 * D 行:通過調用函數`test()`來創建一個測試: * 第一個參數:該測試的名字。 * 第二個參數:參數為t的箭頭函數,參數t給我們提供了AVA的api(assertions 等等) 運行測試,我們在命令行中執行以下命令: ```js npm t demos/quizzes-exercises/id_test.js ``` `t`是`test`的縮寫。也就是說,這個命令的長版本是: ```js npm test demos/quizzes-exercises/id_test.js ``` ![](https://img.kancloud.cn/3e/d5/3ed5755d562179ae6c199264f5e21157.svg) **練習:你的第一次練習** 測試的初體驗: * `exercises/quizzes-exercises/first_module_test.js` #### 9.3.2 AVA中的異步測試 ![](https://img.kancloud.cn/83/6f/836f0345de4fda5b9b81d7038ebb276d.svg) **閱讀** 您可以推遲閱讀本節,直到您進入異步編程的章節。 為異步代碼編寫測試需要額外的工作:當測試返回時,他會后會收到它的結果,并向 AVA 發出信號,表示它還沒有完成。以下小節將分析三種異步方法。 ##### 9.3.2.1 回調異步 如果我們用`test.cd()`來替代`test()`,AVA會切換到基于回調的異步。當我們的回調函數結束后,必須用調用`t.end()` ```js test.cb('divideCallback', t => { divideCallback(8, 4, (error, result) => { if (error) { t.end(error); } else { assert.strictEqual(result, 2); t.end(); } }); }); ``` ##### 9.3.2.2 Promise異步 如果在測試里返回一個Proise,AVA 將其切換到基于`Promise`的異步。如果Promise狀態為`fulfilled`則認為測試成功,如果`Promise`的狀態為`rejected`則認為測試失敗。 ```js test('dividePromise 1', t => { return dividePromise(8, 4) .then(result => { assert.strictEqual(result, 2); }); }); ``` ##### 9.3.2.3 異步函數作為測試“主體” 異步函數總是返回`Promises`。因此,異步函數是實現異步測試的便捷方式。以下代碼與前面的示例等效。 ```js test('dividePromise', async () => { const result = await dividePromise(8, 4); assert.strictEqual(result, 2); // No explicit return necessary! }); ``` 你不需要顯式返回任何內容:隱式返回的undefined則說明異步函數返回的`Promise`的狀態為fulfiled。如果測試代碼拋出異常,則`Promise`狀態為rejected。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看