Testing 如何在elixir中正确断言结构类型

Testing 如何在elixir中正确断言结构类型,testing,elixir,assert,Testing,Elixir,Assert,我知道您可以像这样断言一个类型结构(尽管它更像是一个模块断言): 但有没有更优雅的方式来做到这一点?比如: assert type(foo) == %Foo{} 您可以使用=和模式匹配: assert %Foo{} = foo @dogbert难道不是更地道些吗=将返回求值,例如%Foo{}而=将返回true如果失败,断言错误将提供有关不匹配的更好详细信息。@KevinJohnson=不正确,因为Foo的字段可能与%Foo{}的默认字段不匹配=在assert中是特殊情况,用于在失败时生成有用

我知道您可以像这样断言一个类型结构(尽管它更像是一个模块断言):

但有没有更优雅的方式来做到这一点?比如:

assert type(foo) == %Foo{}

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

assert %Foo{} = foo

@dogbert难道不是更地道些吗
=
将返回求值,例如
%Foo{}
=
将返回
true
如果失败,断言错误将提供有关不匹配的更好详细信息。@KevinJohnson
=
不正确,因为
Foo
的字段可能与
%Foo{}的默认字段不匹配
<代码>=在
assert
中是特殊情况,用于在失败时生成有用的错误消息。原因是
=
被称为“匹配运算符”。它是一款可以在任何时候使用的模式匹配工具,无论是
案例
、带有
还是函数头:)@dogbert,你是我的英雄
assert %Foo{} = foo