2016-04-12 35 views
1

hale yükseltmek bennasıl bir istisna içinde

def call(conn, opts) do 
    try do 
     super(conn, opts) 
    rescue 
     e in Ecto.CastError -> conn 
     |> put_status(:not_found) 
     |> render(ErrorView, "404.html") 

     e in ArgumentError -> conn 
     |> put_status(:not_found) 
     |> render(ErrorView, "404.html") 
    end 
    end 

yerine Ecto.CastError benim denetleyicisi bu şu istisna işleyicisi ben 404 yükseltmek istiyorum bir 400 yükseltmek zorundayız. Ancak, aşağıdaki özel durum test koşulumu tatmin edemediğimden, özel istisna eylemcim bir istisna getirmediğinden.

Soru, testi yapmak için kendi özel kural dışı işleyicimde uygun bir özel durumun nasıl yükseltileceği sorusudur.

cevap

1

I (here tanımlanmıştır) varsayılan böylece Ecto.CastError sonuçlarını geçersiz kılmak mümkün olabilir '' yerine, yanlış bir yaklaşım kullanıyorum

def call(conn, opts) do 
    try do 
     super(conn, opts) 
    rescue 
     e in Ecto.CastError -> conn 
     |> put_status(:not_found) 
     |> render(ErrorView, "404.html") 

     e in ArgumentError -> conn 
     |> put_status(:not_found) 
     |> render(ErrorView, "404.html") 
    end 
    end 

benim denetleyicisi bu bloğu kullanarak olmalıdır

defimpl Plug.Exception, for: Ecto.CastError do 
    def status(_exception), do: 404 
    end