測試命名空間

Google 代碼管理工具自訂範本的單元測試可協助您驗證範本的功能。您可以為每個範本建立一組測試 不必部署代碼就能執行 在開發過程中持續測試範本的行為。每項測試都能 提供範例輸入值、模擬函式呼叫,以及斷言程式碼行為。

限制

  • 單元測試不會檢查驗證規則,但您可以使用「Run Code」按鈕手動檢查驗證。
  • 系統不會對單元測試中的模擬 API 執行權限檢查。

本指南將逐步說明如何為自訂範本編寫單元測試。這個範例會建立可擷取輸入字串的變數範本 也就是大寫版本

  1. 建立新的變數範本。按一下左側導覽面板中的「範本」,然後點選「變數範本」部分下方的「新增」

  2. 按一下「欄位」

  3. 按一下「新增欄位」並選取「文字輸入」。將欄位命名為 text1,並將顯示名稱設為「Text 1」

  4. 在「Code」分頁中,將預設程式碼替換為這個沙箱 JavaScript:

    let input = data.text1;
    return input.toUpperCase();
    
  5. 按一下「測試」開啟「測試」分頁。

  6. 按一下「新增測試」,然後將測試名稱從「未命名的測試 1」變更為 「處理字串」

  7. 按一下展開圖示 (),顯示測試的沙箱 JavaScript 編輯器。將程式碼換成此沙箱防護的 JavaScript:

    // Call runCode to run the template's code with a lowercase string
    let variableResult = runCode({text1: 'this is a test'});
    // Validate that the result of runCode is an uppercase string.
    assertThat(variableResult).isEqualTo('THIS IS A TEST');
    

    這項測試會將 'this is a test' 字串傳遞至變數,並驗證該變數是否傳回 'THIS IS A TEST' 的預期值。runCode API 可用來執行「Code」分頁中的範本程式碼。runCode 的引數是一個物件,做為全域資料使用。assertThat API 會傳回一個物件,可用來流暢地對主體值做出斷言。

  8. 按一下「▶ 執行測試」執行測試。測試的輸出結果會顯示在控制台中。

    點選「▶ Run Tests」按鈕會依照顯示順序,執行範本中所有已啟用的測試。如要變更順序,請使用拖曳圖示 (↘)。您可以按一下測試名稱左側的圓圈,暫時啟用或停用測試。如要執行單一測試,請將滑鼠遊標懸停在測試上,然後按一下隨即顯示的 ▶ 按鈕。

    控制台應會顯示測試的執行總數和失敗的測試數量 (如果有的話)。在本例中,系統只會執行一項測試,且應通過。

  9. 再次點選「Add Test」,新增第二個測試。將測試名稱從「未命名的測試 2」變更為「處理未定義的測試」

  10. 按一下測試即可展開,並開啟沙箱 JavaScript 編輯器。在編輯器中輸入採用沙箱機制的 JavaScript:

    let variableResult = runCode({});
    assertThat(variableResult).isEqualTo(undefined);
    
  11. 按一下「▶」執行測試,一次執行所有測試。測試的輸出結果會顯示在控制台中。

    「處理未定義的」測試應會失敗。恭喜,您發現了錯誤!

  12. 按一下「程式碼」返回並編輯範本的沙箱 JavaScript 程式碼。按照下列方式更新沙箱 JavaScript:

    const getType = require('getType');
    
    let input = data.text1;
    if (getType(input) !== 'string') {
      return input;
    }
    return input.toUpperCase();
    

    更新後的程式碼是先驗證 input 變數再使用的最佳做法。

  13. 按一下「測試」即可返回測試案例清單。

  14. 按一下「▶ 執行測試」,再次執行所有測試案例。這次「Handles undefined」測試應會通過。

  15. 按一下「儲存」,然後關閉範本編輯器。