Kaynağa Gözat

Reset Hardhat Network before each test suite (#4652)

Francisco 2 yıl önce
ebeveyn
işleme
f92dce51ed
1 değiştirilmiş dosya ile 19 ekleme ve 4 silme
  1. 19 4
      hardhat/env-contract.js

+ 19 - 4
hardhat/env-contract.js

@@ -2,9 +2,24 @@ extendEnvironment(env => {
   const { contract } = env;
 
   env.contract = function (name, body) {
-    // remove the default account from the accounts list used in tests, in order
-    // to protect tests against accidentally passing due to the contract
-    // deployer being used subsequently as function caller
-    contract(name, accounts => body(accounts.slice(1)));
+    const { takeSnapshot } = require('@nomicfoundation/hardhat-network-helpers');
+
+    contract(name, accounts => {
+      // reset the state of the chain in between contract test suites
+      let snapshot;
+
+      before(async function () {
+        snapshot = await takeSnapshot();
+      });
+
+      after(async function () {
+        await snapshot.restore();
+      });
+
+      // remove the default account from the accounts list used in tests, in order
+      // to protect tests against accidentally passing due to the contract
+      // deployer being used subsequently as function caller
+      body(accounts.slice(1));
+    });
   };
 });