The method you mentioned (sinon.stub(object, "method", func)) is a method that was available in version 1.x, and did the following according to the documentation:
Replaces object.method with a func, wrapped in a spy. As usual, object.method.restore(); can be used to restore the original method.
However, if you're using sinon.createStubInstance(), all methods are already stubbed. That means you can already do certain things with the stubbed instance. For example:
function Person(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
Person.prototype.getName = function() {
return this.firstname + " " + this.lastname;
}
const p = sinon.createStubInstance(Person);
p.getName.returns("Alex Smith");
console.log(p.getName()); // "Alex Smith"
If you really want to replace a stub by another spy or stub, you could assign the property to a new stub or spy:
const p = sinon.createStubInstance(Person);
p.getName = sinon.spy(function() { return "Alex Smith"; }); // Using a spy
p.getName = sinon.stub(); // OR using a stub
With Sinon.js 2.x and higher, it's even easier to replace a stubbed function by using the callsFake() function:
p.getName.callsFake(function() { return "Alex Smith"; });