Truffle
如何配置“truffle test”將主鏈/rinkeby 鏈分叉為其本地鏈?
我要單元測試的智能合約實例化
IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
. 顯然,該合約不存在於由 生成的本地鏈上truffle test
。解決方案似乎是在作為主鏈/rinkeby 鏈的分支的本地鏈上進行測試?如何配置
truffle test
為這樣執行?感謝:D
編輯 1
我已經嘗試了以下配置,但是它還不起作用:
module.exports = { networks: { development: { fork: "https://eth-rinkeby.alchemyapi.io/v2/{myKey}", network_id: 4 }, } }
它返回以下錯誤:
$ npx truffle test > Something went wrong while attempting to connect to the network. Check your network configuration. Could not connect to your Ethereum client. Please check that your Ethereum client: - is running - is accepting RPC connections (i.e., "--rpc" option is used in geth) - is accessible over the network - is properly configured in your Truffle configuration file (truffle-config.js) Truffle v5.3.6 (core: 5.3.6) Node v14.16.0
編輯 2
truffle 團隊可能在 github 票證中提供了解決方案,因此請檢查一下,但與此同時,我的解決方案是使用 ganache cli 生成一個 fork:
ganache-cli -f https://eth-rinkeby.alchemyapi.io/v2/${ALCHEMY_API_KEY_RINKEBY}
使用以下測試網路:
test: { host: "127.0.0.1", port: 8545, network_id: "*", },
你可以很容易地使用 Ganache-CLI 分叉 Rinkeby 或主網。閱讀這篇文章以獲得詳細解釋https://blockheroes.dev/test-smart-contracts-on-mainnet/
最簡單的命令是:
ganache-cli --fork https://eth-rinkeby.alchemyapi.io/v2/{myKey}
但是您可以通過指定來個性化它:
- 你要分叉的區塊號
- 您想解鎖的地址以及您想從哪裡獲得資金
- 首選網路 ID 等。
ganache-cli --fork https://eth-rinkeby.alchemyapi.io/v2/{myKey} --unlock {wealthyAddress} --networkId 999
確保讓這個 fork 在單獨的視窗上執行。
網路配置如下所示:
networks:{ myfork: { host: "127.0.0.1", port: 8545, network_id: "999", }, }
truffle test --network myfork