hyperledger-fabric - 问一下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() 不需要传递参数。这样的测试有什么意义?我的英文表达不是很好,非常感谢您的意见和建议。
解决方案
推荐阅读
- python - 当类存储在熊猫数据框中时,如何矢量化以访问类方法而不是应用?
- c++ - 为什么二维数组在不应该打印的地方打印 1?
- java - 如何构建使用 java 注释代码生成的混合 java/scala 项目?
- php - 带有折扣的订单的 Wordpress 报告
- php - PHP - 在每个错误或警告上执行一些代码
- java - 如何在 Java 中区分 RUNNING 状态和 java.lang.Thread.State.RUNNABLE
- javascript - Python Selenium:按下按钮时网页加载时间不一致?
- javascript - 你如何将四张卡片包裹在一张居中的卡片上?
- python - 为什么它无法使用 flask_sqlalchemy。mysql 和 flask 的版本都是最新的。我可以通过pymysql连接和执行
- selenium - 无法在 PATH 中找到 chromedriver,或者在显式提供给 webdriver.Chrome() 时