使用 Visual Studio 程式碼測試您的 Chaincode
如果您的鏈碼是在網路上執行,則可以測試任何產生的方法。此外,如果您選擇在鏈碼開發期間建立 executeQuery
方法,如果您的鏈碼部署到 Oracle Blockchain Platform 網路,則可以執行 SQL Rich Query。
在本機 Hyperledger Fabric 網路上測試您的 Chaincode
當您的 chaincode 專案在區域網路執行後,即可進行測試。
區塊鏈 App 產生器包含內建的精靈,可協助您呼叫或查詢鏈碼。
- 在鏈碼窗格中選取您的鏈碼專案。在鏈碼詳細資料窗格中,選取執行。應已選取鏈碼名稱。確定目標環境已設為本機環境,且通道將預設為唯一可用的通道。
- 在函數欄位中,從下拉式清單中選取您的方法。列出鏈碼中可用的每個方法。
- 在函數參數欄位中,選取其他動作 (...) 按鈕。這將會啟動一個視窗,其中包含您所選方法的可用特性。輸入特性,針對您呼叫方法時不要送出的任何非必要特性,按一下省略,然後按一下儲存。
- 按一下呼叫。
輸出主控台視窗會顯示已呼叫函數。或者,在鏈碼動作窗格中,函數輸出視窗會顯示輸出。按一下其他動作 (...) 按鈕,即可查看此輸出的格式。
如果您想要儲存剛執行的方法和參數,可以按一下儲存,然後輸入該方法的名稱和描述。它將會儲存在鏈碼專案的 Queries
資料夾中。若要再次使用,請在其上按一下滑鼠右鍵,然後選取開啟。
如果您變更會變更方法的控制器檔案,請選取鏈碼執行窗格頂端的重新載入圖示。變更現在應反映在函數下拉式清單中。
附註:
如果您不想使用精靈進行測試,也可以在 Visual Studio 程式碼終端機視窗中執行區塊鏈 App 產生器命令行工具。請依照此處提供的指示,使用下列命令行進行測試: 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 網路後,您可以依照在本機 Hyperledger Fabric 網路上測試您的鏈碼中的描述進行測試。
您可以使用相同的呼叫和查詢命令,在遠端 Oracle Blockchain Platform Cloud 或 Enterprise Edition 網路上執行所有方法交易;遠端網路也支援本機網路上支援的所有項目。執行測試時,請選取 Oracle Blockchain Platform 執行處理作為目標環境。
測試遠端 Oracle Blockchain Platform Network 上的權杖專案
您可以使用 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 DB SQL Rich Queries
如果您選擇在鏈碼開發期間建立 executeQuery
方法,如果您的鏈碼部署到 Oracle Blockchain Platform 網路,則可以執行 SQL Rich Query。
如果您已在規格檔案的 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 Rich Query,確保您在執行查詢時,選取您建立為目標環境的 Oracle Blockchain Platform 環境。
- 在鏈碼詳細資料窗格中,選取執行。鏈碼名稱、目標環境及通路應已從部署步驟預先填入。
- 在函數名稱欄位中,從下拉式清單中選取
executeQuery
。 - 在函數參數欄位中,選取其他動作 (...) 按鈕。這會啟動一個視窗,供您輸入查詢字串。輸入查詢的引數,然後按一下儲存。
- 按一下查詢。
ochain query executeQuery "SELECT key, valueJson FROM <STATE> WHERE
json_extract(valueJson, '$.rawMaterialAvailable') = 4"
整個 SQL 查詢都包含在引數中,因此您可以即時變更查詢。