Тестирование асинхронного кода в Elixir

Я хочу проверить функцию, которая используетTask.async

Чтобы выполнить мой тестовый прогон, мне нужно перевести его в спящий режим на 100 мсек перед утверждениями, в противном случае процесс тестирования прерывается до выполнения асинхронной задачи.

Есть ли способ лучше?

РЕДАКТИРОВАНИЕ, добавление примеров кода:

Код, который я хотел бы проверить (примерно):

def search(params) do
  RateLimiter.rate_limit(fn ->
    parsed_params = ExTwitter.Parser.parse_request_params(params)
    json = ExTwitter.API.Base.request(:get, "1.1/search/tweets.json", parsed_params)
    Task.async(fn -> process_search_output(json) end)
    new_max_id(json)
  end)
end

А тест я уже написал (работает только с призывом ко сну)

test "processes and store tweets" do
  with_mock ExTwitter.API.Base, [request: fn(_,_,_) -> json_fixture end] do
    with_mock TwitterRateLimiter, [rate_limit: fn(fun) -> fun.() end] do
      TSearch.search([q: "my query"])
      :timer.sleep(100)
      # assertions 
      assert called TStore.store("some tweet from my fixtures")
      assert called TStore.store("another one")
    end
  end
end

Ответы на вопрос(2)

Ваш ответ на вопрос