code: func (stub *MockStub) InvokeChaincode(chaincodeName string, args [][]byte, channel string) pb.Response {
  	// Internally we use chaincode name as a composite name
  	if channel != "" {
  		chaincodeName = chaincodeName + "/" + channel
  	}
  	// TODO "args" here should possibly be a serialized pb.ChaincodeInput
  	otherStub := stub.Invokables[chaincodeName]
  	mockLogger.Debug("MockStub", stub.Name, "Invoking peer chaincode", otherStub.Name, args)
  	//	function, strings := getFuncArgs(args)
  	res := otherStub.MockInvoke(stub.TxID, args)
  	mockLogger.Debug("MockStub", stub.Name, "Invoked peer chaincode", otherStub.Name, "got", fmt.Sprintf("%+v", res))
  	return res
  }
docs: // InvokeChaincode calls a peered chaincode.
  // E.g. stub1.InvokeChaincode("stub2Hash", funcArgs, channel)
  // Before calling this make sure to create another MockStub stub2, call stub2.MockInit(uuid, func, args)
  // and register it with stub1 by calling stub1.MockPeerChaincode("stub2Hash", stub2)