Hardhat
重置測試套件中的本地安全帽節點?
我正在測試我的合約的一些部署功能,並且我想在一些測試之間將本地安全帽網路重置為初始狀態,特別是從測試網路中清除所有先前部署的合約。(我沒有使用獨立的註釋——我們使用的是在您鍵入 hh test 時創建的註釋。)
有沒有辦法在測試套件中執行此操作,而不必一起重新執行?
hardhat_reset
在beforeEach
鉤子中使用:describe("suite", function () { beforeEach(async function () { await hre.network.provider.send("hardhat_reset") }) it("first test", function () { // Fresh instance of the hardhat network // Send txs }) it("second test", function () { // Fresh instance of the network again // The txs sent in the previous test won't // be reflected here. }) })
是的,要做到這一點,您應該搜尋
Mocha
測試並Chai
查看它是如何製作的。基本上
Mytest(){ beforeEach() =>{ // deploy a new instanse } it() =>{ // run a test on this deployment instance. } } // here your previous deployment don't exist anymore // it will not reset you eth balance.
這是這些測試的範例,您可以以此為例開始測試。
https://github.com/MadeInDreams-Team/idecentralize/blob/master/test/Token.test.js
我懷疑在 HRE 內部執行的程序是否會觸發節點的重置。沒見過做的。
如果您希望自動化一系列測試。最好的地方是在任務範圍內。
task( "My task", ... =>{ // run test one script // reset node // run test 2 script }