Как правило, вы не захотите заглушать методы в классе, а только в одном объекте этого класса. Чтобы вернуть обещание, используйте resolves()
вместо returns()
.
import myClass from "testClass.service";
describe("MyModule", () => {
const sandbox = sinon.createSandbox();
const myInstance = new myClass();
let valTest;
beforeEach(() => {
const userObj = {
a: "ValueA",
b: "ValueB",
c: "ValueC"
};
valTest = sandbox.stub(myInstance , "appStore").resolves(userObj );
});
afterEach(() => {
sandbox.restore();
});
it("myfunc1 is a proxy for myfunc2", () => {
expect(myInstance.appStore("dataname")).to.eql(userObj );
});
});
Если вы действительно хотите заглушить нестатический метод для всех объектов, производных от определенного класса, вы должны сделать это на прототипе.
sandbox.stub(myClass.prototype, "appStore").resolves(userObj);
Метод appStore
все еще не существует в самом классе, но вы можете убедиться, что заглушка работает с использованием любого объекта.
expect((new myClass).appStore("dataname")).to.eql(userObj);