问题标签 [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 - Scala,ZIO - 如何测试效果是否返回成功?
我有一个简单的测试代码来检查模拟服务:
service
回报Task[Done]
。_ 它工作正常,但我也想检查它是否unsafeRun
返回succeed
。我试着这样做:
或者:
但它不起作用。有什么方法可以检查效果结果是否成功?
scala - 如何用 ZIO 解释最终的无标签 DSL?
我有一个最终的无标签 DSL 来构建简单的数学表达式:
我想实现一个 ZIO 解释器。根据module-pattern
指南,可能的实现如下所示:
使用此实现构建表达式时,必须provideLayer
像这样重复调用:
这看起来更像是一种反模式。解释 DSL 的最惯用或最 ZIO 的方式是什么?
scala - ZIO 监视文件系统事件
帮助我如何在 ZIO 上组织目录扫描。这是我的版本,但它不会跟踪所有文件创建事件(错过一些事件)。
感谢您的意见。
scala - ZIO 1.0.3 改变了环境的工作方式,现在 http4s Blaze 将无法运行
我第一次使用 ZIO,我从https://github.com/guizmaii/scala-tapir-http4s-zio/blob/master/src/main/scala/example/HttpApp.scala的样板存根开始使用 ZIO 版本 1.0.0-RC17 来设置和运行 http4s Blaze 服务器,包括 Tapir。效果很好,但后来我尝试更新到版本 1.0.3,以便我使用最新版本,但该版本与此存根中的代码不兼容。具体来说:
这是定义服务器的代码(一些不相关的路由线从原始中删除):
这是 run() 方法的主体。运行此代码不会导致应用程序以代码 0 退出,因为 Blaze 服务器按预期阻止终止。问题是这个片段:
由于引入了 Has[A],这在 1.0.3 中不起作用。编译器现在抱怨你不能从最终类 Has 继承,所以你不能调用新的时钟。
我试图通过替换它来解决这个问题
并用 ExitCode 对象替换退出代码整数,这使得代码编译,但在此之后 Blaze 服务器似乎没有初始化或阻止应用程序的终止。它刚刚以退出代码 0 结束。
显然这里缺少一些东西,而且我还没有看到任何关于从旧环境系统转移到基于 Has[A] 的新系统的信息。如何修复此样板文件以便 Blaze 服务器再次运行?
scala - Scala,ZIO - 每次重试后记录一些东西
我有一个简单的代码retry
在发布消息失败时执行:
但我不确定它是否会在每个retry
. 如果发布失败,我想在每次重试后记录“发布事件失败”。此外,我不确定retry
(fold
我的意思是)之后的代码是否在每个retry
周期后执行。
这是正确的方法还是我应该使用其他方法来达到我的需要?
zio - 如何为理解片段运行一个简单的 ZIO
在 getstarted zio doc 页面中有这个简单的例子,但我无法运行它,有什么简单的代码可以使这个片段工作(有问题并能够在控制台中回答)?
scala - 与泛型一起使用的 ZIO Mock 方法
我正在尝试模拟具有通用方法的服务,但我无法弄清楚如何在模拟中定义效果。通用效果甚至可以工作吗?有什么解决方法吗?
服务:
模拟:
PS:我也尝试过,@mockable[AService.Service]
但我收到:“宏扩展期间的异常:需要标识符但 $XMLSTART$< 找到”
谢谢
scala - Http4s解码器如何自定义无效字段的错误消息
我有以下代码:
我的堆栈是 http4s + zio。
我为这个案例类添加了自定义解码器,其中有一行:
发布无效的 json 和无效的电子邮件返回给我:
HTTP/1.1 422 无法处理的实体内容类型:文本/纯文本;charset=UTF-8 日期:2021 年 1 月 19 日星期二 16:46:27 GMT 内容长度:29
请求正文无效。
响应代码:422(无法处理的实体);时间:681ms;内容长度:29字节
我想定制。在 http4s 代码中,我看到 InvalidMessageBodyFailure。但我在文档中找不到如何自定义此响应的任何信息。
有人可能已经试过了吗?
谢谢
编辑:
示例用户创建请求:
json请求:
这可以使用这样的代码来实现:
但我想知道它是否可以通过一些已经完成但没有记录的http4s核心功能来简化:)
scala - 如何组合两个具有 zio 效果和不同类型环境的 Http4s 路由
我有两条Http4s
路线:
哪里RTask
只是Task/RIO
一个自定义环境:
可以通过导入“zio-cats-interop”库并做常规来完成具有相同类型参数的两条路由的组合routes1<+>routes1
,但是由于类型参数HttpRoutes
是不变的,我不能对不同的类型做同样的事情:
有什么解决办法吗?
scala - zio sqs 消息属性
我,我有消费方法,如:
我向队列发送消息:
aws sqs 发送消息 --endpoint-url "https://sqs.eu-west-2.amazonaws.com/666" --queue-url "https://sqs.eu-west-2.amazonaws.com /666/queue-name" --message-body '{ "event_type": "create", "user_id": "666" }' --message-attributes "AWSTraceHeader={StringValue=TestTenant,DataType=String}"
和 message.attributes 给了我一张空地图..我做错了什么?谢谢!