JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 178
  • Score
    100M100P100Q102323F

tegg event plugin

Package Exports

  • @eggjs/eventbus-plugin
  • @eggjs/eventbus-plugin/app
  • @eggjs/eventbus-plugin/app/extend/application.unittest
  • @eggjs/eventbus-plugin/app/extend/context
  • @eggjs/eventbus-plugin/lib/EggContextEventBus
  • @eggjs/eventbus-plugin/lib/EggEventContext
  • @eggjs/eventbus-plugin/lib/EventHandlerProtoManager
  • @eggjs/eventbus-plugin/lib/EventbusLoadUnitHook
  • @eggjs/eventbus-plugin/lib/EventbusProtoHook
  • @eggjs/eventbus-plugin/package.json
  • @eggjs/eventbus-plugin/types

Readme

@eggjs/eventbus-plugin

NPM version Known Vulnerabilities npm download Node.js Version

Usage

// plugin.js
export.teggEventbus = {
  enable: true,
  package: '@eggjs/eventbus-plugin',
};

Unittest

// test/fixtures/apps/event-app/app/event-module/HelloService
@ContextProto({
  accessLevel: AccessLevel.PUBLIC,
})
export class HelloService {
  @Inject()
  private readonly eventBus: EventBus;

  hello() {
    this.eventBus.emit('hello', '01');
  }
}

// test/fixtures/apps/event-app/app/event-module/HelloLogger
@Event('helloEgg')
export class HelloLogger {
  handle(msg: string) {
    console.log('hello, ', msg);
  }
}

// test/event.test.ts
import assert from 'assert';
import path from 'path';
import mm from 'egg-mock';
import { HelloService } from './fixtures/apps/event-app/app/event-module/HelloService';
import { HelloLogger } from './fixtures/apps/event-app/app/event-module/HelloLogger';

describe('test/eventbus.test.ts', () => {
  let app;
  let ctx;

  afterEach(async () => {
    await app.destroyModuleContext(ctx);
    mm.restore();
  });

  before(async () => {
    app = mm.app();
    await app.ready();
  });

  after(() => {
    return app.close();
  });

  it('msg should work', async () => {
    ctx = await app.mockModuleContext();
    const helloService = await ctx.getEggObject(HelloService);
    let msg: string | undefined;
    // helloLogger is in child context, should mock the prototype
    mm(HelloLogger.prototype, 'handle', m => {
      msg = m;
    });
    const eventWaiter = await app.getEventWaiter();
    const helloEvent = eventWaiter.await('hello');
    helloService.hello();
    await helloEvent;
    assert(msg === '01');
  });
});