使用 Visual Studio Code 测试链代码

如果链代码在网络上运行,则可以测试生成的任何方法。此外,如果您选择在链代码开发期间创建 executeQuery 方法,则可以在链代码部署到 Oracle Blockchain Platform 网络时运行 SQL 丰富的查询。

在本地超级账本架构网络上测试您的链代码

在本地网络上运行链代码项目后,您可以对其进行测试。

Blockchain App Builder 包含一个内置向导,可帮助您调用或查询链代码。

  1. Chaincodes 窗格中选择链代码项目。在 Chaincode Details 窗格中,选择 Execute 。已选择链代码名称。确保将目标环境设置为本地环境,以便通道默认为唯一可用的通道。
  2. 函数字段中,从下拉列表中选择一个方法。将列出链代码中可用的每个方法。
  3. Function Param(函数参数)字段中,单击 More Actions(更多操作)按钮。这将启动一个窗口,其中显示所选方法的可用属性。输入属性,然后单击 Omit(忽略)以获得您不希望在调用方法时提交的任何非必需属性。单击保存
  4. 单击调用

Output 控制台窗口将显示函数已被调用。或者,在 Chaincode Actions(链代码操作)窗格中, Function Output(函数输出)窗口将显示输出。单击更多操作以查看此输出格式。

要保存刚刚运行的方法和参数,请单击保存并输入名称和说明。该函数将保存在 Queries 文件夹的链代码项目中。要再次使用它,请右键单击它并选择打开

如果对更改方法的控制器文件进行任何更改,请选择 Chaincode Execute 窗格顶部的 Reload 图标。然后,更改将反映在函数下拉列表中。

注意:

如果不想使用向导进行测试,还可以在 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 网络上运行的链代码,类似于在本地网络上测试链代码,如 Test Your Chaincode on a Local Hyperledger Fabric Network 中所述。

您可以使用相同的命令在远程 Oracle Blockchain Platform Cloud 或 Enterprise Edition 网络上完成所有方法事务;远程网络上也支持本地网络上支持的所有内容。运行测试时,选择 Oracle Blockchain Platform 实例作为目标环境。

在远程 Oracle Blockchain Platform 网络上测试令牌项目

您可以使用区块链应用构建器、Oracle Blockchain Platform REST 代理或超级账本架构 SDK 测试使用令牌的链代码项目。

区块链应用构建器

您可以使用 Visual Studio Code 扩展调用具有多个用户的事务处理来测试令牌链代码。要对多个用户进行测试,请更改环境选项卡中的授权参数(用户名和密码),然后保存环境。调用事务处理时,请从下拉列表中选择相同的环境,然后运行事务处理。

Oracle Blockchain Platform REST 代理

您可以在 Oracle Blockchain Platform 中使用 REST 代理在远程 Oracle Blockchain Platform 网络上运行令牌链代码。使用任何 REST 代理客户端(例如 Postman REST 客户端)测试链代码项目。

要测试多个用户,请在 REST 客户端中更改授权参数(用户名和密码),或者连接到 Oracle Blockchain Platform 的其他实例。

执行 Berkeley DB 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. Chaincode Details 窗格中,选择 Execute 。已从部署步骤指定链代码名称、目标环境和渠道。
  2. Function Name(函数名称)字段中,从下拉列表中选择 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. Chaincodes 窗格中展开项目。
  2. 右键单击查询
  3. 单击 Generate CLI Commands

生成两个文本文件并显示在 Chaincodes 窗格的 Queries 部分中:CLIcommandsForLinux.txtCLIcommandsForWindows.txt。选择文件名以打开文件并显示相应的 CLI 命令。