¿Apuñalar y / o burlarse de una clase en sinon.js?

He creado un contenedor de base de datos para mi aplicación, que se muestra a continuación. Para probarlo, obviamente me gustaría reemplazar la biblioteca de base de datos real. Podría crear una nueva clase que se burla de laquery Método y captura toda la entrada allí, pero utilizandosinon.js Parece más apropiado, pero ¿cómo lo usaría?
Es elmock ostub caracteristicas desinon.js ¿Qué debería estar usando?

wrapper = (function() {

  function wrapper() {}

  wrapper.db = require("database");

  wrapper.prototype.insertUser = function(doc) {
    return this.db.query("INSERT INTO USERS...");
  };

  return wrapper;

})();

Respuestas a la pregunta(2)

Su respuesta a la pregunta