Привет, сообщество. У меня есть этот код, который не работает в последней строке. Как только он закомментирован, он проходит, как и ожидалось. Проблема заключается в том, чтобы издеваться над классом миксина.
У кого-нибудь есть мысли, рекомендации или идеи, как справиться с этой проблемой?
Я запускаю это:
Спасибо.
import { Rhum } from "https://deno.land/x/[email protected]/mod.ts";
import { assertInstanceOf } from "https://deno.land/[email protected]/testing/asserts.ts";
export interface IGame {}
export class NullGame implements IGame {}
function WithGameProperty() {
return <T extends new (...args: any[]) => any>(GameProperty: T) => {
return class extends GameProperty {
private game: IGame = new NullGame();
public set Game(game: IGame) {
this.game = game;
}
public get Game() {
return this.game;
}
};
};
}
const PlayersEngine = WithGameProperty()(
class PlayersEngine {
onNextGenerationReady(listener: () => void): void {
// add listener to react on an event
}
prepareNextGeneration(): void {
// do some stuff and trigger an event
}
},
);
const pe = new PlayersEngine();
pe.Game = new NullGame();
assertInstanceOf(pe.Game, NullGame);
Rhum.mock(NullGame).create();
Rhum.mock(PlayersEngine).create();






для справки, я один из сопровождающих Rhum.
Проблема заключается во внутреннем коде Rhum, наша логика, которая получает свойства, не работает с геттерами и сеттерами. Я поигрался с этим и сумел получить работающее исправление, так что это вообще не ваш код.
Например:
let desc = Object.getOwnPropertyDescriptor(original, property);
if (desc === undefined) {
// property is a getter or setter
desc = Object.getOwnPropertyDescriptor(this.constructor_fn.prototype, property)
}
// We can now use `desc.value`
Я добавлю исправление для этого и тестовый пример, а сегодня вечером выпущу новую версию патча, так что следите за релизами :)
Большое спасибо :) v 1.1.14 работает хорошо.