如何在elixir中正确断言struct类型

lap*_*ira 7 testing assert elixir

我知道你可以断言这样的类型结构(虽然它更像是一个模块断言):

assert foo.__struct__ == Foo
Run Code Online (Sandbox Code Playgroud)

但有没有更优雅的方式来做到这一点?就像是:

assert type(foo) == %Foo{}
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 17

您可以使用=和模式匹配:

assert %Foo{} = foo
Run Code Online (Sandbox Code Playgroud)

  • @KevinJohnson` ==`是不正确的,因为`foo`的字段可能与`%Foo {}`的默认字段不匹配.`=`在`assert`中是特殊的,以便在失败时产生有用的错误消息. (4认同)