2017-09-16 29 views
0

我已經瞭解到,在Elixir社區中通常不會很好地考慮模擬。考慮到這一點,我有以下的困境,我不太清楚如何解決。在Elixir中生成響應數據時避免模擬

首先,我目前的設計中使用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

我的問題是這樣的:如何採取「協議和配置更改」的方法,仍然驗證遠程生成數據?(認識到這不是數據本身,但它是我主張的轉變。在這種情況下,composite_key

回答

1

我覺得有用的方法是在系統的邊界使用像ex_vcr的工具,僅用於確保遠程數據可以反序列化爲定義良好的結構。

這就像一個集成測試,它將使用來自遠程系統的緩存響應。

所有的應用程序業務邏輯和數據轉換都可以定義爲普通的老靈藥模塊和函數,可以直接測試。