У меня есть класс javascript / typcript (AAA
), который расширяет другой класс (BBB
).API класса BBB
стабилен, но реализации пока нет.Я просто хочу провести модульное тестирование некоторых функций только в классе AAA
.Поэтому мне нужно создать экземпляр класса AAA
, но пока он не был успешным из-за вызова конструктора класса BBB
.Это мой пример :
BBB.ts:
class BBB {
constructor() {
throw new Error("BBB");
}
public say(msg: string): string {
return msg;
}
}
module.exports = BBB;
AAA.ts:
const BB = require("./BBB");
class AAA
extends BB {
public hello(): string {
return super.say("Hello!");
}
}
module.exports = AAA;
тестовый скрипт:
const AA = require("../src/AAA");
import sinon from "sinon";
describe("Hello Sinon", () => {
describe("#hello", () => {
it("#hello", async () => {
const stub = sinon.stub().callsFake(() => { });
Object.setPrototypeOf(AA, stub);
let a = new AA();
sinon.spy(a, "hello");
a.hello();
sinon.assert.calledOnce(a.hello);
sinon.assert.calledOnce(stub);
// how to verify that super.say has been called once with string "Hello!"?
});
});
});
Я использую sinonjs .Но в этом случае я не могу создать экземпляр AAA
.И если мы можем, как проверить, что super.say
функции были вызваны?
Спасибо!
ОБНОВЛЕНИЕ : Теперь я могу создать экземпляр AAA
, ноЯ не знаю, как проверить звонок на super.say
.