#8247·effect

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