Hyperledger fabric 如何在使用fabric模拟存根测试链码时模拟两个链码

Hyperledger fabric 如何在使用fabric模拟存根测试链码时模拟两个链码,hyperledger-fabric,hyperledger-chaincode,Hyperledger Fabric,Hyperledger Chaincode,我一直致力于链码开发和测试。我已经成功地测试了多个链码实例,但现在我遇到了一个问题。我的一个链码调用另一个链码。我无法在测试环境中模拟两个链码 到目前为止,我已经浏览了@TheLeadger/fabric模拟存根的文档,但没有任何结果。我通过提出错误来尝试尝试成功,并得出了正确的结论。 “错误:找不到链码bank_contract/primarychannel。请使用mockPeerChaincode创建此链码。” 处理此错误后,如下所示: let Chaincode = require("./

我一直致力于链码开发和测试。我已经成功地测试了多个链码实例,但现在我遇到了一个问题。我的一个链码调用另一个链码。我无法在测试环境中模拟两个链码

到目前为止,我已经浏览了@TheLeadger/fabric模拟存根的文档,但没有任何结果。我通过提出错误来尝试尝试成功,并得出了正确的结论。 “错误:找不到链码bank_contract/primarychannel。请使用mockPeerChaincode创建此链码。”

处理此错误后,如下所示:

let Chaincode = require("./transaction-contract.js");
let BankChaincode = require("../bank/bank-contract");
let fms = require("@theledger/fabric-mock-stub");
let chai = require("chai");
let expect = require("chai").expect;
let should = require("chai").should();
let globalTemp = "";
let globalTempAdmin = "";

let ChaincodeMockStub = fms.ChaincodeMockStub; 
const chaincode = new Chaincode();
const bankChaincode = new BankChaincode();
const mockStub = new ChaincodeMockStub("transaction_chaincode", 
 chaincode);
const bankMockStub = new ChaincodeMockStub("bank_contract", 
 bankChaincode);
mockStub.mockPeerChaincode("bank_contract", bankMockStub);
我在执行chaincode函数时仍然会遇到相同的错误

我的问题是:

  • 我做得对吗?我制作两个模拟存根,然后在另一个存根上注册
  • 我如何根据自己的情况指定频道名称,这是我的代码失败的地方

  • 您必须创建并注册名为
    /
    的第二个链码。你的情况应该是这样的

    const bankMockStub=新的ChaincodeMockStub(“银行合同/主渠道”,bankChaincode);
    mockStub.mockPeerChaincode(“银行合同/主渠道”,bankmocksub);
    
    我不知道为什么,但这就是
    ChaincodeMockStub.invokeChaincode
    的工作原理:

    if(频道!=''){
    chaincodeName=chaincodeName+'/'+通道;
    }
    

    更多详细信息。

    您必须创建并注册名为
    /
    的第二个链码。你的情况应该是这样的

    const bankMockStub=新的ChaincodeMockStub(“银行合同/主渠道”,bankChaincode);
    mockStub.mockPeerChaincode(“银行合同/主渠道”,bankmocksub);
    
    我不知道为什么,但这就是
    ChaincodeMockStub.invokeChaincode
    的工作原理:

    if(频道!=''){
    chaincodeName=chaincodeName+'/'+通道;
    }
    
    更多细节