问题标签 [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.

0 投票
2 回答
227 浏览

scala - 委托给更具体的上下文绑定(附加隐式参数)

我正在尝试创建一个 ZIO 模块的示例,它有两种实现:

  1. 将 YAML 与 circe-yaml 一起使用
  2. 将 HOCON 与 pureConfig 一起使用

我的一般界面如下所示:

现在我的 YAML 实现看起来像:

Decoder是特定于实现的。

现在的问题是如何将服务实现委托给loadYaml.

我尝试了以下方法:

这给了我:

有没有办法做到这一点?

我在 Github 上创建了一个示例项目:zio-comps-module

这里描述了这个想法:Decouple the Program from its Implementation with ZIO modules

0 投票
1 回答
225 浏览

scala - ZIO:如何动态注入依赖项

ZIO中,我们为 Environment 提供了启动Traits

我想做的是MyComponent从配置文件动态注入 - 模拟Guice模块。

这个博客描述了整个场景。

我可以注入一个依赖项,然后创建环境,如:

在哪里service注入。

这可行,但有一个很大的缺点:我们必须为所有服务实现定义环境。因此,例如,如果其中一个想要使用Random,这是不可能的,因为我们只提供Console

有没有替代方案?

0 投票
1 回答
579 浏览

scala - 如何忽略 ZIO 测试中的套件或测试?

我找不到任何关于如何使用 ZIO 测试忽略套件或测试的信息。

无论是在示例中还是在文档中(https://zio.dev/docs/usecases/usecases_testing

中有ignored一个test package object

但是如何在您的代码中使用它?

我尝试了不同的事情,但没有成功。

0 投票
2 回答
234 浏览

scala - 如何断言错误类型中的单个字段?

假设我有这样的代码:

我想使用 ZIO Test 来检查特定的错误情况

我想做的是检查errorCode特定值的字段。但似乎 ZIO Test 中现有的组合器只允许我检查完整的对象。我只想检查_.errorCodewhile ignoring _.id,这意味着equalTo对于这个用例来说不是一个足够好的组合子。

我将如何解决这个问题?

0 投票
1 回答
275 浏览

scala - 有没有办法在布尔 ZIO 测试中添加描述性断言消息

我有几个Booleans我想测试,比如

如果失败了,我得到的只是:

不知道哪条线失败了。有没有办法可以添加描述性断言消息。例如:

或首选:

会导致

还是有更好的测试方法Booleans

0 投票
1 回答
571 浏览

scala - 如何强制按顺序运行 ZIO 测试

我想按顺序运行两个集成测试。这如何在ZIO Test中实现?

这是套房:

ZIO Test并行运行这两个测试。有没有办法强制它们按顺序运行?

0 投票
1 回答
198 浏览

scala - 如何使用 ZIO 配置处理 ADT(密封特征)

如何使用ZIO Conf代数数据类型手动添加配置描述

示例中,我找到了一个关于如何使用Magnolia处理ADT的示例。

手动添加配置描述时也可以这样做吗?

这里有一个例子:

木兰

手动:

0 投票
1 回答
229 浏览

scala - 配置描述符如何使用 ZIO Config / Magnolia 查找地图

我有以下案例类:

我不知道如何为此创建配置描述。Magnolia的自动推导也不起作用。

使用元组自动派生列表(但仍然不知道配置描述如何用于此)。

这是限制吗?我也找不到一个例子。

0 投票
3 回答
480 浏览

scala - 使用 ZIO 在折叠中提前中止

我想为ZIO添加一个abort-early-in-a-fold的答案。

所以我采用了猫的解决方案:cats solution

ZIO如何做到这一点?

我得到的最接近的:

但这给了我:15而不是12. 所以它似乎短路了,但它需要的数量太多了。它是一个Intnot Option[Int]

0 投票
1 回答
406 浏览

json - Scala,Circe,Http4s - 有什么方法可以在 Circe 中编码 Throwable?

我创建了错误层次结构:

现在我的http4s路线中可能会出现这种错误:

但我得到编译错误:

could not find implicit value for parameter encoder: io.circe.Encoder[Throwable]

Throwable是否可以使用circeand进行编码http4s?我试着这样做:

但这并没有解决问题。