问题标签 [zio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 委托给更具体的上下文绑定(附加隐式参数)
我正在尝试创建一个 ZIO 模块的示例,它有两种实现:
- 将 YAML 与 circe-yaml 一起使用
- 将 HOCON 与 pureConfig 一起使用
我的一般界面如下所示:
现在我的 YAML 实现看起来像:
这Decoder
是特定于实现的。
现在的问题是如何将服务实现委托给loadYaml
.
我尝试了以下方法:
这给了我:
有没有办法做到这一点?
我在 Github 上创建了一个示例项目:zio-comps-module
这里描述了这个想法:Decouple the Program from its Implementation with ZIO modules
scala - ZIO:如何动态注入依赖项
在ZIO中,我们为 Environment 提供了启动Traits:
我想做的是MyComponent
从配置文件动态注入 - 模拟Guice模块。
这个博客描述了整个场景。
我可以注入一个依赖项,然后创建环境,如:
在哪里service
注入。
这可行,但有一个很大的缺点:我们必须为所有服务实现定义环境。因此,例如,如果其中一个想要使用Random
,这是不可能的,因为我们只提供Console
。
有没有替代方案?
scala - 如何忽略 ZIO 测试中的套件或测试?
我找不到任何关于如何使用 ZIO 测试忽略套件或测试的信息。
无论是在示例中还是在文档中(https://zio.dev/docs/usecases/usecases_testing)
中有ignored
一个test package object
:
但是如何在您的代码中使用它?
我尝试了不同的事情,但没有成功。
scala - 如何断言错误类型中的单个字段?
假设我有这样的代码:
我想使用 ZIO Test 来检查特定的错误情况
我想做的是检查errorCode
特定值的字段。但似乎 ZIO Test 中现有的组合器只允许我检查完整的对象。我只想检查_.errorCode
while ignoring _.id
,这意味着equalTo
对于这个用例来说不是一个足够好的组合子。
我将如何解决这个问题?
scala - 有没有办法在布尔 ZIO 测试中添加描述性断言消息
我有几个Booleans
我想测试,比如
如果失败了,我得到的只是:
不知道哪条线失败了。有没有办法可以添加描述性断言消息。例如:
或首选:
会导致
还是有更好的测试方法Booleans
?
scala - 如何强制按顺序运行 ZIO 测试
我想按顺序运行两个集成测试。这如何在ZIO Test中实现?
这是套房:
ZIO Test并行运行这两个测试。有没有办法强制它们按顺序运行?
scala - 配置描述符如何使用 ZIO Config / Magnolia 查找地图
我有以下案例类:
我不知道如何为此创建配置描述。Magnolia的自动推导也不起作用。
使用元组自动派生列表(但仍然不知道配置描述如何用于此)。
这是限制吗?我也找不到一个例子。
scala - 使用 ZIO 在折叠中提前中止
我想为ZIO添加一个abort-early-in-a-fold的答案。
所以我采用了猫的解决方案:cats solution
ZIO如何做到这一点?
我得到的最接近的:
但这给了我:15
而不是12
. 所以它似乎短路了,但它需要的数量太多了。它是一个Int
not Option[Int]
。
json - Scala,Circe,Http4s - 有什么方法可以在 Circe 中编码 Throwable?
我创建了错误层次结构:
现在我的http4s
路线中可能会出现这种错误:
但我得到编译错误:
could not find implicit value for parameter encoder: io.circe.Encoder[Throwable]
Throwable
是否可以使用circe
and进行编码http4s
?我试着这样做:
但这并没有解决问题。