Hardhat

重置測試套件中的本地安全帽節點?

  • October 28, 2021

我正在測試我的合約的一些部署功能,並且我想在一些測試之間將本地安全帽網路重置為初始狀態,特別是從測試網路中清除所有先前部署的合約。(我沒有使用獨立的註釋——我們使用的是在您鍵入 hh test 時創建的註釋。)

有沒有辦法在測試套件中執行此操作,而不必一起重新執行?

hardhat_resetbeforeEach鉤子中使用:

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
}

引用自:https://ethereum.stackexchange.com/questions/112281