在安全帽入门套件上,单元测试会检查您是否可以发出 API 请求。但实际上并不能满足要求。在任务中,它请求卷数据,但未显示如何满足请求。
通过查看mockOracle的代码,我发现了这个函数。
const r = await mockOracle.fulfillOracleRequest(requestId, data)
我不知道如何使数据成为我想要的样子。例如,当我传递以下数据时,它返回巨大的无缝随机数 24516769870864860957297836120308737325622166553046088662895407649136392011776。
const data = ethers.utils.formatBytes32String("64")
如何使用传递给 fillOracleRequest 的数据模拟 api 响应?另外,因为我在 chainlink 入门套件中找不到任何这样的示例,所以这是否是在本地安全帽网络上执行此操作的正确方法?
The 满足Oracle请求函数在模拟Oracle合约 https://github.com/smartcontractkit/hardhat-starter-kit/blob/main/contracts/test/MockOracle.sol响应采用 bytes32 参数,因此您需要对其进行正确编码。这是您如何模拟响应作为API消费者单元测试 https://github.com/smartcontractkit/hardhat-starter-kit/blob/main/test/unit/APIConsumer_unit_test.js:
let mockResponse = '777'
const responseBytes = ethers.utils.formatBytes32String(mockResponse)
const r = await mockOracle.fulfillOracleRequest(requestId, responseBytes)
要回答你的第二个问题,是的,在与未集成到 Chainlink 预言机的本地链合作时,这是正确的做法。实际上有一个开放问题 https://github.com/smartcontractkit/hardhat-starter-kit/issues/67为单元测试实现这些。如果您愿意,请随意接受!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)