I can't find any example of someone mocking a Dojo module successfully.
I found https://gis.utah.gov/mock-your-dojo-amd-modules-with-stubmodule-js/ but when I try to run StubModule, I get an error at line 27 of stub-module.js because "modules" isn't a member of the require variable.
I also looked into Sinon.js but they don't say anything about mocking AMD modules (http://sinonjs.org/docs/#mocks).
Does anyone know of any working examples of someone mocking a Dojo AMD module?
I supposed it depends on exactly what you want to mock.
For example, you can use Sinon to stub out methods of a module, just remember to reset them so you don't taint other tests.
Something like this generator-arcgis-js-app/helpers-mapgenerator.js at master · odoe/generator-arcgis-js-app · GitHub
  registerSuite({
    name: 'helpers: mapgenerator',
    setup: function() {
      // set up test here
    },
    beforeEach: function() {
      // run before
      sinon.stub(arcgisUtils, 'createMap').returns({
        then: function(){}
      });
    },
    afterEach: function() {
      // run after
      arcgisUtils.createMap.restore();
    },
    teardown: function() {
      // destroy widget
    },
    'helper attempts to create map': function() {
      var params = { id: 'test', webmapid: '1234' };
      helper.fromWebMapAsJSON(params);
      expect(arcgisUtils.createMap).to.have.been.calledOnce;
    },
  });Based on your example, does that mean I can write something like:
require([
  'firstwatch/HelloWorld',
  'dojo/promise/Promise',
  'dojo/promise/all',
  'firstwatch/tests/stub-module'
 ],
 function (
  HelloWorld,
  Promise,
  all,
  stubModule) {
 describe("A suite", function () {
beforeEach: function() {
      // run before
      sinon.stub(dom, 'methodInDOM').returns({
        then: function(){}
      });
    },
  it("contains spec with an expectation", function () {
   expect(HelloWorld.deadOrAlive()).toBe("alive");
  
  });
 });
});
to test the following module ("HelloWorld.js") without making the browser actually go out and make an instance of dojo/dom?
define(["dojo/dom"], function(dom) {
    return {
        saySomething: function() {
            alert("Hello world");
dom.doSomethingPointless();
        },
  deadOrAlive: function(){
   return "alive";
  }
    };
});
