effect/vitest: 设计一种方法来配置 `it.layer`, 以便在每次测试中重新创建一些服务实例
作者: chmnchiang创建于 2026年9月15日更新于 2026年9月15日
标签enhancement
这个功能能解决什么问题?
目前,`It.layer(.)'让我们在每次试验中注入同样的一层。 服务实例是共享的,虽然每个测试具有相同的依赖性是常见的,但我们通常也希望实例开始新鲜,并为每个测试重新创建.
你为解决问题而提出的特征是什么?
例如:
导入 {它, TestLayer } 从“ @ effect/vitest” 导入 从“ 效果” 导入{ 效果}
//拟议API. // RepositoryLive 取决于数据库和缓存服务. Const TestServices = TestLayer. merge (中文(简体) ). TestLayer.shared(数据库测试), TestLayer.each( 缓存测试), TestLayer.each( 仓库活性) (中文(简体) ).
it.layer(测试服务) ("仓库", (it) {{ it. effect ("创建了记录"), () QQ effect.gen(函数 * () { Const 仓库 = 产量* 仓库 // 共享数据库,新缓存和仓库. ) (中文(简体) ). (中文(简体) ).
it.effect ("列出记录", () QQ) effect.gen(函数 * () { Const 仓库 = 产量* 仓库 / 相同的数据库,新的缓存和寄存器. ) (中文(简体) ). (中文(简体) ). ) (中文(简体) ).
或者在创建图层时用某种方式标记服务
你考虑过其他什么选择吗?
- 利用`效果'在每次试验中提供分层。 经常重复
- 重新设置 " 各自之前 " 的共享服务: " 各自之前 " 并不了解效果,而且不幸无法进入这一层.内容来源: Effect-TS/effect