sinon.stub() vs sinon.sandbox.stub()?

javascript, qunit, sinon, unit-testing

Solution

Stubs - Sinon.JS

`sinon.stub();` read about from here

Sandboxes - Sinon.JS

`sandbox.stub();` read detail from here

Works almost exactly like `sinon.stub`, only also adds the returned stub to the internal collection of fakes for easy restoring through `sandbox.restore()`.

The sandbox stub method can also be used to stub any kind of property. This is useful if you need to override an object’s property for the duration of a test, and have it restored when the test completes

Problem

Using sinon and sinon-qunit in our front end unit tests, and I'm struggling to understand the difference in these methods. We are using `sinon.sandbox.stub()` (literally that is the function, we do not create a sandbox) and these stubs are apparently restored after each test automatically. I just don't see this anywhere in the documentation. I wouldn't think that this method exists, I would think you would need to explicitly create a sandbox using `sinon.sandbox.create()`. On that sandbox object you would call the stub function, `i.e. mySandbox.stub()`, not `"sinon.sandbox.stub()"`. Could anyone help me understand?

Original source