Skip to content

Repository files navigation

egg-di

build statusTest coverageNPM versionnpm download

Dependency injection lib for Egg.js.

use

// serviceimport{Context}from'egg-di';
@ContextexportclassHackerNewsextendsService{foo(){}}// other serviceimport{inject}from'egg-di';exportclassFooextendsService{
@inject()privatereadonlyhackerNews: HackerNews;bar(){this.hackerNews.foo();}}// other controllerimport{inject}from'egg-di';exportclassFooextendsController{
@inject()privatereadonlyhackerNews: HackerNews;bar(){this.hackerNews.foo();}}

circular dependency

// FooexportdefaultclassFoo{
@inject(()=>Bar)readonlybar: Bar;}// BarexportdefaultclassBar{
@inject(()=>Foo)readonlyfoo: Foo;}

test

Test injected service.

// serviceimport{Context}from'egg-di';
@ContextexportclassHackerNewsextendsService{foo(){}}// hackernews.test.tsimport{getComponent}from'egg-di';describe('service/HackerNews.test.js',()=>{constapp=mm.app();letctx: Context;lethackerNews: HackerNews;before(async()=>{awaitapp.ready();ctx=app.mockContext();hackerNews=getComponent(HackerNews,ctx);});it('getTopStories',async()=>{constlist=awaithackerNews.getTopStories();assert(list.length===30);});});

Mock injected service.

// serviceimport{Context}from'egg-di';
@ContextexportclassHackerNewsextendsService{foo(){}}// bar.test.tsimport{getComponent}from'egg-di';constapp=mm.app();ctx=app.mockContext();consthackerNews: HackerNews=getComponent(HackerNews,ctx);mm.data(hackerNews,'foo','hello');

About

Dependency injection lib for Egg.js.

Resources

Stars

50 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages