Ver código fonte

Reset Hardhat Network before each test suite (#4652)

(cherry picked from commit f92dce51ed24a5b4e0009c1522ee12b30f3409ac)
Francisco 2 anos atrás
pai
commit
a874080fc1
1 arquivos alterados com 19 adições e 4 exclusões
  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));
+    });
   };
 });