是否有类似 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 () => {
…
}
}
我尝试过像 InversifyJS、tsyringe 和 node-dependency-injection 这样的库,但它们纯粹是面向对象的,不适用于函数式编程