如何使用ChainCodeMockStub

时间:2019-04-08 18:47:45

标签: node.js testing hyperledger-fabric

我正在尝试测试nodejs链码,而不将其部署到hyperledger fabic网络中。有一个流行的nodejs库,称为@ theledger / fabric-mock-stub。下面是我的单元测试

const Chaincode = require('./index.js');
// import { ChaincodeMockStub, Transform } from "@theledger/fabric-mock-stub";
const ChaincodeMockStub = require("@theledger/fabric-mock-stub")
// You always need your chaincode so it knows which chaincode to invoke on
const chaincode = new Chaincode();
describe('Test MyChaincode', () => {
    it("Should init without issues", async () => {
        const mockStub = new ChaincodeMockStub("MyMockStub", chaincode);
        const response = await mockStub.mockInit("tx1", []);
        expect(response.status).to.eql(200)
    });
});

运行此测试时,收到以下错误
2019-04-08T18:34:55.530Z ERROR [lib/chaincode.js] uncaughtException: Missing required argument peer.address

有人知道如何使用此测试库吗? https://github.com/wearetheledger/fabric-mock-stub

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我注意到在我的chaincode js文件的底部

shim.start(new Chaincode())

如果在执行测试之前将此行移至另一个文件或将其注释掉,则测试应该可以正常进行。

答案 1 :(得分:0)

您可以从链码中共享Init函数吗,错误是由于Init函数而不是测试框架引起的