私は(エリクサーで)次のコードをテストするための方法を把握しようとしてきた:別のモジュールからインポートしたクライアントAPI関数を使用している関数をテストするにはどうすればよいですか?
defmacro __using__(_) do
quote do
# API functions will be used from this client
import Client.API
def list_storages do
case list_buckets do
{:ok, res} ->
case res.status_code do
200 ->
res.body
|> Friendly.find("name")
|> Enum.map(fn bucket -> bucket.text end)
_ ->
res |> show_error_message_and_code
end
{:error, reason} ->
parse_http_error reason
end
end
...
問題はlist_buckets
関数は(つまり、既にClient.API
モジュールからのインポートテストされていますされています私は本当にそこに何も変更することはできません別のプロジェクト)。私の考えは、API関数をスタブ/モック/ダミーにして、ダミーの返信だけを返すことでした。私はを使用してlist_buckets
関数をオーバーライドしようとしましたが、関数定義が別のモジュールで起こっているために機能しません。
私は以下を読んでいます:ホセ・ヴァリムのpostこれはClient.APIモジュールのテストに役立ちましたが、私はこれらの概念をこの特定の問題に適用する方法を見つけることはできません。
私の唯一の(そして愚かな)アイデアは、テストファイル内のマクロ内のすべての関数を再実装し、そこに定義されたダミーのAPI関数を使用することですが、非常に間違っていると感じ、テストコード。 >出力したエラーメッセージとコード - - >正しいデータ {:ok, res}
を受け
- が
200
{:ok, res}
とコードを受信:は基本的に私は、次の3つの例が正しいかどうかをテストしたいです
{:error, reason}
を受け - は - > HTTPエラーを解析し、失敗の理由を出力
誰もこれで私を助けることができますか?