Я пытаюсь найти способ смоделировать конструктор, чтобы он выдавал ошибку (для целей модульных тестов). Я получил то, что, кажется, работает. Вот рабочий пример:
class SomeClass {
constructor(val) {
this.value = val;
}
getValue() {
return this.value;
}
};
let a = new SomeClass('A');
console.log("a.value=" + a.getValue());
// Make SomeClass acts as if an exception is thrown from constructor
var backupSomeClass = SomeClass;
SomeClass = function(val) {
throw "problem in pseudo-constructor";
};
try
{
let b = new SomeClass('B');
console.log("b.value=" + b.getValue());
}
catch(e) {
console.log("got error: " + e);
}
// Back to the original class definition
SomeClass = backupSomeClass;
// Test again with original class definition
try
{
let c = new SomeClass('C');
console.log("c.value=" + c.getValue());
}
catch(e) {
console.log("got error: " + e);
}
И соответствующий вывод:
a.value=A
got error: problem in pseudo-constructor
c.value=C
Поскольку я не знаком с базовым процессом создания объектов, я не уверен, что этот способ делать это приемлемо (возможные побочные эффекты? неустойчивость?)
Буду признателен за любые отзывы или советы!