测试:检查是否返回元组

时间:2016-10-12 17:54:31

标签: erlang

我正在编写一个检查来自gen_server的响应的测试。回复本身可以是{profile, SomeProfileFromGenServer}{error, ErrorResponse}

所以我想编写一个测试:

Profile = mygenserver:get_profile(),
?assertEqual(Profile, {profile, SomeProfile})

因为我并不关心SomeProfile值。但是这说SomeProfile是未绑定的:(有没有办法解决它?

2 个答案:

答案 0 :(得分:3)

您可以使用?assertMatch,第一个参数是模式:

?assertMatch({profile, _}, Profile)

答案 1 :(得分:2)

  

assertMatch(GuardedPattern,Expr)

如果启用了测试,则评估Expr并将结果与​​GuardedPattern匹配。如果匹配失败,将生成一个信息性异常;有关详细信息,请参阅assert宏。 GuardedPattern可以是你可以写在 - >左侧的任何东西。 case子句中的符号,除了它不能包含以逗号分隔的守卫测试。

将assertMatch用于简单匹配而不是与=匹配的主要原因是它产生更详细的错误消息。

<强>示例:

?assertMatch({found, {fred, _}}, lookup(bloggs, Table))
?assertMatch([X|_] when X > 0, binary_to_list(B))