lowcode-engine/packages/core/__tests__/instantiation.spec.ts
2024-05-11 10:32:30 +08:00

37 lines
595 B
TypeScript

import { it, describe, expect } from 'vitest';
import { lazyInject, provide, initInstantiation } from '../src/instantiation';
interface Warrior {
fight(): string;
}
interface Weapon {
hit(): string;
}
@provide(Katana)
class Katana implements Weapon {
public hit() {
return 'cut!';
}
}
@provide(Ninja)
class Ninja implements Warrior {
@lazyInject(Katana)
private _katana: Weapon;
public fight() {
return this._katana.hit();
}
}
initInstantiation();
describe('', () => {
it('works', () => {
const n = new Ninja();
expect(n.fight()).toBe('cut!');
});
});