首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Elixir测试中使用旁路和Finch?

如何在Elixir测试中使用旁路和Finch?
EN

Stack Overflow用户
提问于 2020-12-18 09:48:06
回答 1查看 227关注 0票数 0

我的项目使用Finch进行并行HTTP请求。

我尝试将绕过添加到我的测试中,但未检测到HTTP请求。当我运行测试时,我得到这个错误:

No HTTP request arrived at Bypass

这是我的测试:

代码语言:javascript
复制
defmodule MyClientTest do
  use ExUnit.Case, async: true

  setup do
    bypass = Bypass.open()
    {:ok, bypass: bypass}
  end

  describe "list_apps" do
    test "should have an expected app", %{bypass: bypass} do
      {:ok, contents} = File.read("test/apps.json")

      Bypass.expect(
        bypass,
        fn conn ->
          Plug.Conn.resp(conn, 200, contents)
        end
      )

      list_apps = MyClient.list_apps()
      assert length(list_apps) == 57
    end
  end
end

这是我的MyClient模块:

代码语言:javascript
复制
defmodule MyClient do
  alias Finch.Response

  def child_spec do
    {Finch,
     name: __MODULE__,
     pools: %{
       "https://myapp.com" => [size: 100]
     }}
  end

  def applications_response do
    :get
    |> Finch.build("https://myapp.com/v2/apps.json")
    |> Finch.request(__MODULE__)
  end

  def handle_applications_response({:ok, %Response{body: body}}) do
    body
    |> Jason.decode!()
    end
  end

  def list_apps do
    handle_applications_response(applications_response())
  end

end
EN

回答 1

Stack Overflow用户

发布于 2021-02-14 12:08:13

无论您点击什么URI,Bypass都不会接管HTTP连接。它在本地主机上的一个随机端口上设置一个测试服务器。您需要获取该端口(bypass.port),使用它构造一个本地主机URI,并将该URI传递给要调用的测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65350734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档