我希望从返回Either<Exception, Object>
类型的方法中轻松提取值。
我正在做一些测试,但无法轻松测试我的方法的返回。
例如:
final Either<ServerException, TokenModel> result = await repository.getToken(...);
为了测试我是否能够做到这一点
expect(result, equals(Right(tokenModelExpected))); // => OK
现在,我如何直接检索结果?
final TokenModel modelRetrieved = Left(result); ==> Not working..
我发现我不得不这样投:
final TokenModel modelRetrieved = (result as Left).value; ==> But I have some linter complain, that telling me that I shouldn't do as to cast on object...
我也想测试异常,但它不工作,例如:
expect(result, equals(Left(ServerException()))); // => KO
所以我试了这个
expect(Left(ServerException()), equals(Left(ServerException()))); // => KO as well, because it says that the instances are different.
8条答案
按热度按时间qv7cva1a1#
好了,这里的解决方案我的问题:
提取/检索数据
测试异常
ddhy6vgd2#
朋友们,
只需像下面这样创建dartz_x. dart。
像这样使用。
cnh2zyt33#
我不能发表评论...但也许你可以看看这个post。它不是同一种语言,但看起来像是同一种行为。
祝你好运。
j9per5c44#
提取值的另一种方法是简单地转换为
Option
,然后转换为dart
可空值:如果愿意,您可以定义一个简单的扩展名来简化此操作:
6bc51xsx5#
向左或向右提取:
左侧:
右:
xdyibdwo6#
我返回任一类型的折叠结果
bd1hkmkf7#
使用Either给出的fold方法,并将不想为null的部分Map到自身:
然后导入包含此扩展名的文件,您可以在任一示例上调用.getRight()或.getLeft()。
polkgigr8#
}