2017-09-16 12 views
0

私は、モックが一般的にエリクシールのコミュニティではよく考えられていないことを理解するようになりました。それを念頭において、私は次のような苦境を抱えています。エリクシルでレスポンスデータを生成するときにモックを避ける

まず、私の現在の設計https://github.com/jjh42/mockを使用して

remote_api_generated_data = %{ 
    transaction_id: "09200-12-235089721-3987235", 
    confirmation_number: "JB789FKS78GS82" 
} 

with_mock RemoteApi.Client, [order: Mocks.RemoteApi.Client.successful_transaction(&1, vaulted_data)] do 
    conn = post conn, transaction_path(conn, :create), data: [@create_attrs] 
    response = json_response(conn, 201)["data"] 
    assert response.composite_key == "#{remote_api_generated_data.transaction_id}:#{remote_api_generated_data.confirmation_number}" 
end 

ホセ・Valimは、プロトコルおよびコンフィギュレーションファイルを使用して、素敵なモック・ソリューションを提供しています。詳細はこちらの記事を参照してください。http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts

私の質問はです。「プロトコルと設定の変更」のアプローチを取って、データをリモートで生成するにはどうしたらよいですか?私は便利なアプローチは、システムの境界でex_vcrのようなツールを使用することです

答えて

1

を(この場合はcomposite_key。それはデータそのものではなく、私が主張してること、それの変換ではないことを認識し)、リモートデータを適切に定義された構造体にデシリアライズできるようにする目的でのみ使用されます。

これは、リモートシステムからキャッシュされた応答を使用する統合テストのように機能します。

すべてのアプリケーションのビジネスロジックとデータ変換は、直接テストできるプレーンな古いエリクシールモジュールと関数として定義できます。

関連する問題