我一直在尝试使用垫片“ MockStub”对链代码进行测试,以对链代码进行测试,并遇到了问题。
Root
|
Some folder
|
chaincode
├── chaincode1
│ ├── chaincode1.go
│ ├── chaincode1_test.go
│
└── chaincode2
├── chaincode2.go
├── chaincode2_test.go
|
Other folders
假设当我在chaincode1中运行MockInvoke并将其某些值传递给另一个函数以执行某些任务时,上述层次结构为。问题是此链码使用垫片InvokeChaincode
函数并调用另一个链码(如chaincode2
)。无论如何,我可以将MockPeerChaincode
与MockInvoke一起传递以解决此问题或其他方法吗?
Chaincode-1
func Insert(stub shim.ChaincodeStubInterface, args []string) pb.Response{
//Add to blockchain but create an account
....
makeAccount(stub,AccountIDhash,AccountBalance)
....
}
func makeAccount(stub shim.ChaincodeStubInterface, accountID string, amount string){
.....
//function includes converting the accountID and ammount to chaincode arguments
//this method invokes the secondchaincode(chaincode2)
response := stub.InvokeChaincode("chaincode2", chaincodearguments, "mychannel")
if response.Status != shim.OK {
return shim.Error("chaincode1: " + "Unable to create new account from chaincode")
}
return shim.Success([]byte("chaincode1: " + "created new account from chaincode"))
}
....other methods in Chaincode1
答案 0 :(得分:1)
定义代码的方式是对接口进行操作,以便您可以使用实现接口定义的模拟结构。 如果所有依赖项都基于接口,则可以轻松地对其进行模拟。