使用 Visual Studio 程式碼測試您的鏈碼

如果您的鏈碼是在網路上執行,您可以測試任何產生的方法。此外,如果您選擇在鏈碼開發期間建立 executeQuery 方法,如果您的鏈碼部署到 Oracle Blockchain Platform 網路,則可以執行 SQL Rich Query。

在本機 Hyperledger Fabric 網路上測試您的鏈碼

當您的鏈碼專案在本機網路上執行之後,您就可以進行測試。

Blockchain App Builder 包含一個內建精靈,可協助您呼叫或查詢您的鏈碼。

  1. 鏈碼窗格中選取您的鏈碼專案。在鏈碼詳細資訊窗格中,選取執行。已選取鏈碼名稱。確定目標環境設為本機環境,讓通道預設為唯一可用的通道。
  2. 函數欄位中,從下拉式清單中選取方法。列出鏈碼中可用的每個方法。
  3. 函數參數欄位中,按一下其他動作按鈕。這會啟動一個視窗,其中顯示所選方法的可用特性。輸入特性,然後針對呼叫方法時不想送出的任何非必要特性,按一下省略。按一下儲存
  4. 按一下呼叫

輸出主控台視窗將顯示已呼叫該函數。或者,在鏈碼動作窗格中,函數輸出視窗會顯示輸出。按一下其他動作,即可查看此輸出的格式。

若要儲存剛執行的方法和參數,請按一下儲存,然後輸入名稱和描述。此函數會儲存在 Queries 資料夾的鏈碼專案中。若要再次使用它,請在它上按一下滑鼠右鍵,然後選取開啟

如果您對更改方法的控制器檔案進行任何變更,請選取鏈碼執行窗格頂端的重新載入圖示。變更就會反映在函數下拉式清單中。

附註:

如果您不想使用精靈進行測試,也可以在 Visual Studio Code 終端機視窗中執行 Blockchain App Builder 命令行工具。如需從命令行測試的詳細資訊,請參閱 Test Your Chaincode on a Local Hyperledger Fabric Network

在本機測試多個記號使用者

若要在本機測試具有多位使用者的記號專案,您可以使用 tokenUser 特性來變更每筆交易的呼叫者。每個鷹架式鏈碼專案都包含一個 .ochain.json 檔案,該檔案儲存鏈碼的中繼資料。您可以更新 .ochain.json 檔案中 tokenUser 欄位的值來變更呼叫者。

{
  "name": "digiCurrCC",
  "description": "Chaincode package for digiCurrCC",
  "chaincodeName": "digiCurrCC",
  "chaincodeType": "node",
  "configFileLocation": "/Users/user1/token.yml",
  "appBuilderVersion": "21.2.3",
  "nodeVersion": "v12.18.1",
  "tokenUser": "admin"
}

當專案框架化時,tokenUser 特性會設為本機網路的預設 admin 使用者。若要變更交易的呼叫者,請變更 tokenUser 特性,以符合在呼叫 createAccount (TypeScript) 或 CreateAccount (Go) 方法時建立帳戶時所設定的 user_id 特性。

更新後的自動安裝與部署

每當您更新並儲存鏈碼時,系統就會自動編譯、安裝及部署變更。不需要關閉或再次啟動區域網路。系統將針對每項變更自動編譯和部署所有專案。

在遠端 Oracle Blockchain Platform 網路上測試生命週期作業

在您的鏈碼專案成功部署到遠端 Oracle Blockchain Platform 網路後,您可以進行測試。

您測試在遠端 Oracle Blockchain Platform 網路上執行的鏈碼,類似於在本機網路上測試,如在本機 Hyperledger Fabric 網路上測試您的鏈碼中所述。

您可以使用相同的命令來完成遠端 Oracle Blockchain Platform Cloud 或 Enterprise Edition 網路上的所有方法交易;遠端網路也支援本機網路支援的所有功能。在執行測試時,選取 Oracle Blockchain Platform 執行處理作為您的目標環境。

在遠端 Oracle Blockchain Platform 網路上測試權杖專案

您可以使用 Blockchain App Builder、Oracle Blockchain Platform REST 代理主機或 Hyperledger Fabric SDK 來測試使用權杖的鏈碼專案。

區塊鏈 App 產生器

您可以使用 Visual Studio Code 擴充來呼叫與多位使用者的交易,以測試權杖鏈碼。若要測試多位使用者,請變更環境頁籤中的授權參數 (使用者名稱和密碼),然後儲存環境。呼叫交易時,請從下拉式清單中選取相同的環境,然後執行交易。

Oracle Blockchain Platform REST 代理主機

您可以使用 Oracle Blockchain Platform 中的 REST 代理主機,在遠端 Oracle Blockchain Platform 網路上執行權杖鏈碼。使用任何 REST 代理主機從屬端 (例如 Postman REST 從屬端) 來測試您的鏈碼專案。

若要測試多個使用者,請變更您 REST 從屬端中的授權參數 (使用者名稱和密碼),或連線至其他 Oracle Blockchain Platform 執行處理。

執行 Berkeley 資料庫 SQL 豐富查詢

如果您選擇在鏈碼開發期間建立 executeQuery 方法,如果您的鏈碼部署到 Oracle Blockchain Platform 網路,則可以執行 SQL 豐富查詢。

如果您已在規格檔案的 customMethods 區段中使用 executeQuery,控制器中將會建立對應的 executeQuery 方法。

規格檔案:
customMethods:
    - executeQuery
    - "fetchRawMaterial(supplierid: string, rawMaterialSupply: number)"
    - "getRawMaterialFromSupplier(manufacturerId: string, supplierld: string, rawMaterialSupply: number)"
    - "createProducts(manufacturerId: string, rawMaterialConsumed: number, productsCreated: number)"
    - "sendProductsToDistribution()"
控制器檔案:
**
*
* BDB sql rich queries can be executed in OBP CS/EE.
* This method can be invoked only when connected to remote OBP CS/EE network.
*
*/
@Validator(yup.string())
public async executeQuery(query: string) {
    const result = await OchainController.query(query); 
    return result;
}

您可以呼叫此方法,在 Oracle Blockchain Platform 網路上執行 Berkeley DB SQL 豐富查詢。您必須選取在執行查詢時建立為目標環境的 Oracle Blockchain Platform 環境。

範例:
  1. 鏈碼詳細資訊窗格中,選取執行。已從部署步驟指定鏈碼名稱、目標環境及通道。
  2. 函數名稱欄位中,從下拉式清單中選取 executeQuery
  3. 函數參數欄位中,按一下其他動作。這會啟動一個視窗,供您輸入查詢字串。輸入查詢的引數,然後按一下儲存
  4. 按一下查詢
輸出視窗便會開啟並顯示正在執行的查詢以及結果。
ochain query executeQuery "SELECT key, valueJson FROM <STATE> WHERE
json_extract(valueJson, '$.rawMaterialAvailable') = 4" 

整個 SQL 查詢都會在引數中執行,以便能夠即時變更查詢。

從查詢產生 CLI 命令

如果您已在 Visual Studio Code 的鏈碼專案中儲存查詢,則可以自動產生同等的 CLI 命令。

您必須在鏈碼專案中至少有一個已儲存的查詢,才能產生 macOS、Linux 和 Microsoft Windows 的 CLI 命令。

  1. 鏈碼窗格中展開專案。
  2. 查詢上按一下滑鼠右鍵。
  3. 按一下產生 CLI 命令

鏈碼窗格的查詢區段中會產生並顯示兩個文字檔:CLIcommandsForLinux.txtCLIcommandsForWindows.txt。選取要開啟檔案的檔案名稱,並顯示對應的 CLI 指令。