2016-10-12 30 views
2

私はgen_serverの応答をチェックするテストを書いています。テスト:タプルが返されるかどうか確認してください。

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

を私は本当にSomeProfile値を気にしないとして:応答自体はどちらか{profile, SomeProfileFromGenServer}または

{error, ErrorResponse}は、だから私が行うテストを書きたかったです。しかし、これはSomeProfileが:(バインドされていない、それを修正する方法があることを述べている

答えて

3

あなたがパターンである第1の引数で、?assertMatchを使用することができます?

?assertMatch({profile, _}, Profile) 
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)) 
関連する問題