首页 > 解决方案 > 问一下fabric chaincode2.0的测试功能,好像和shimtest包有很大区别

问题描述

我正在研究hyperledger/fabic-samples/asset-transfer-basic/chaincode-go/中的测试功能,但是contractapi和shimtest有很大的区别,看不懂程序逻辑。一段程序如下:</p>

func TestReadAsset(t *testing.T) {
    chaincodeStub := &mocks.ChaincodeStub{}
    transactionContext := &mocks.TransactionContext{}
    transactionContext.GetStubReturns(chaincodeStub)

    expectedAsset := &chaincode.Asset{ID: "asset1"}
    bytes, err := json.Marshal(expectedAsset)
    require.NoError(t, err)

    chaincodeStub.GetStateReturns(bytes, nil)
    assetTransfer := chaincode.SmartContract{}
    asset, err := assetTransfer.ReadAsset(transactionContext, "")
    require.NoError(t, err)
    require.Equal(t, expectedAsset, asset)

测试的链码方法ReadAsset()的返回值已经由GetStateReturns()确定。也就是说,ReadAsset() 的返回值资产是字节。ReadAsset() 不需要传递参数。这样的测试有什么意义?我的英文表达不是很好,非常感谢您的意见和建议。

标签: hyperledger-fabrichyperledgerhyperledger-chaincode

解决方案


推荐阅读