使用 Visual Studio Code 测试链代码

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

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

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

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

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

输出控制台窗口将显示该函数已调用。或者,在 Chaincode Actions 窗格中, Function Output 窗口显示输出。单击 More Actions (...) 按钮可查看此输出格式。

如果要保存刚刚运行的方法和参数,则可以单击保存并输入其名称和说明。它将保存在 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 网络后,可以按照 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 代理或 Hyperledger Fabric 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. 函数名字段中,从下拉列表中选择 executeQuery
  3. 函数参数字段中,选择更多操作 (...) 按钮。这将启动一个窗口,您可以在其中输入查询字符串。输入查询的参数,然后单击保存
  4. 单击查询
输出窗口,其中将显示正在执行的查询和结果。
ochain query executeQuery "SELECT key, valueJson FROM <STATE> WHERE
json_extract(valueJson, '$.rawMaterialAvailable') = 4" 

整个 SQL 查询都是在参数中进行的,因此您可以即时更改查询。

从查询生成 CLI 命令

如果在 Visual Studio Code 中的链代码项目中保存了查询,则可以自动生成等效的 CLI 命令。

要为 Mac OSX 和 Linux 以及 Microsoft Windows 生成 CLI 命令,链代码项目中必须至少有一个已保存的查询。

  1. Chaincodes 窗格中展开项目。
  2. 右键单击查询
  3. 单击 Generate CLI Commands

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