我正在为返回
Result
的函数编写测试。我如何测试它“是”一个Err
(或一个Ok
)?
\() -> Expect.equal expectedFailure (Err _)
不起作用。
如何解码非参数?
我可能错过了一个更优雅的解决方案,但我个人只会编写一个辅助函数。
resultOk result =
case result of
Ok _ -> True
Err _ -> False
然后在你的测试中
Expect.true "expected this to be OK" (resultOk <| Ok "All good")
Expect.false "expected this to be an error" (resultOk <| Err "Oh no!")
如果测试失败,Expect.true
和 Expect.false
会打印一个字符串,然后打印一个应该为 true(在 Expect.true
的情况下)或 false(在 Expect.false
的情况下)的表达式。
现在有专门的
Expectation
– Expect.ok
和 Expect.err
– 用于表达 Ok
值的预期变体(Err
或 Result
):
Expect.ok : Result a b -> Expectation
Expect.err : Result a b -> Expectation
给定
expectedFailure
类型的 Result a b
值,您可以将 expectedFailure
作为 Err
变体的期望设置为:
\_ -> expectedFailure |> Expect.err