Typescript 和 Express 中函数式编程的依赖注入容器

问题描述 投票:0回答:0

是否有类似 InversifyJs 的依赖注入容器,但用于 typescript 中的函数式编程?我想要实现的是从我的测试端到端注入一个假函数,就像我对 OOP 所做的一样,就像下面的例子

测试端到端绑定假用户存储库

import magicContainer from 'magic-library'
import { UserRepositoryInterface } from '..'
import { FakeUserRepository } from '..'

describe(‘My test describe’, () => {

    test('My test', async () => {
        magicContainer.bind(UserRepositoryInterface, FakeUserRepository)

        await supertest(app)
        .post('/my-endpoint')
        .send({payload})
        .expect(HttpStatus.OK)
})

})

快速路由器:

import {UserRepositoryInterface} from '...'
import {UserRepository} from '...'
import magicContainer from ‘magic-library’

const router = Router()
router.post('/my-endpoint', magicContainer.bind(UserRepositoryInterface, UserRepository)
)

用户界面和实现:

export interface UserRepositoryInterface {
    myFunction: () => Promise<User[]>
}


export const UserRepository: UserRepositoryInterface = {
    myFunction: async () => {
        …
    }
}

export const FakeUserRepository: UserRepositoryInterface = {
    myFunction: async () => {
        …
    }
}

我尝试过像 InversifyJStsyringenode-dependency-injection 这样的库,但它们纯粹是面向对象的,不适用于函数式编程

typescript express dependency-injection functional-programming ioc-container
© www.soinside.com 2019 - 2024. All rights reserved.