【发布时间】:2017-07-19 17:05:59
【问题描述】:
当我尝试在本地 golang 中执行单元测试时,当我尝试通过 MockStub 对象实例化和调用另一个链代码时,我遇到了编译问题。以下是我的文件层次结构:
├── transaction-chaincode
│ ├── transaction.go
│ ├── transaction_test.go
│ └── vendor
└── user-chaincode
├── user.go
├── user_test.go
└── vendor
这里的场景基本上涉及其中一个链码,例如user.go,调用另一个链码transaction.go。两个目录中的供应商文件夹包含完全相同的内容。
当我尝试通过 user_test.go 中的 shim.NewMockStub 实例化事务链码的新实例时会出现问题,因为事务模拟对象从事务链码/供应商/而不是用户链码中查找 init 方法/vendor/,尽管供应商文件夹具有相同的包(因此方法相同)。
我可以通过在 transaction-chaincode 和 user-chaincode 的父目录中拥有一个供应商文件夹来消除此错误,但出于开发目的我不能这样做。您建议我如何解决这个单元测试问题,同时将供应商文件夹保留在各自的位置?
【问题讨论】:
-
您使用什么工具进行销售?您对
vendor目录中的包使用什么导入路径? -
@yazgazan 使用什么工具进行销售是否重要?我用的是govendor,导入路径是vendor目录里面的包和原来的包是一样的
-
“常规”方法是针对供应商二进制文件,而不是库。如果您的 vendoring 工具使 dep 树变平(没有嵌套的供应商目录),您仍然可以在库中使用 vendoring。您可能可以通过在
transaction-chaincode中出售user-chaincode来解决您的问题,反之亦然,但这会使维持出售变得痛苦。我认为最好的解决方案是在您的父目录中进行供应商(假设父目录是您的存储库的根目录)。
标签: go hyperledger hyperledger-fabric