Приемлемый способ издеваться над конструктором javascript ES6? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь найти способ смоделировать конструктор, чтобы он выдавал ошибку (для целей модульных тестов). Я получил то, что, кажется, работает. Вот рабочий пример:

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

Поскольку я не знаком с базовым процессом создания объектов, я не уверен, что этот способ делать это приемлемо (возможные побочные эффекты? неустойчивость?)

Буду признателен за любые отзывы или советы!

...