title: Sinon Error "Attempted to wrap ... which is already wrapped" on Multiple Files
body: <p>I have multiple files that use sinon to stub the same method <code>Utils.getTimestamp</code>. </p>
  
  <p>When running the tests files, one at a time all tests pass.
  When running the tests files at once, the tests fail with: TypeError: "Attempted to wrap getTimestamp which is already wrapped" </p>
  
  <p>In both files, I have the describe blocks with a before and after blocks</p>
  
  <p>In the Before block, I stub the method like: 
  getTimestampStub= sinon.stub(Utils, 'getTimestamp')
                  .returns(myTimestamp);</p>
  
  <p>In the After block I restore the method like: 
  getTimestampStub.restore();</p>
  
  <p>I tried this according to this answer:
  <a href="https://stackoverflow.com/a/36075457/6584537">https://stackoverflow.com/a/36075457/6584537</a></p>
  
  <p>Sample files: </p>
  
  <p><strong>FILE 1</strong></p>
  
  <pre><code>describe("First Stub", () =&gt; {
      let getTimestampStub;
      before(() =&gt; {
          getTimestampStub= sinon.stub(Utils, 'getTimestamp') .returns("SOME_TIMESTAMP");
      });
  
      it("Should run some code that uses getTimestamp", () =&gt; {
          // Some code that in the process uses `Utils.getTimestamp`
      });
      after(() =&gt; {
          getTimestampStub.restore();
      });
  });
  </code></pre>
  
  <p><strong>FILE 2</strong></p>
  
  <pre><code>describe("Second Stub", () =&gt; {
      let getTimestampStub;
      before(() =&gt; {
          getTimestampStub= sinon.stub(Utils, 'getTimestamp') .returns("SOME_TIMESTAMP");
      });
  
      it("Should run some OTHER code that uses getTimestamp", () =&gt; {
          // Some code that in the process uses `Utils.getTimestamp`
      });
  
      after(() =&gt; {
          getTimestampStub.restore();
      });
  });
  </code></pre>