簡體   English   中英

有沒有辦法從 iex 提示符中再次重新運行初始測試/混合命令?

[英]Is there a way to rerun the initial test/mix command again from within the iex prompt?

如果我使用 iex 運行測試,例如:

iex -S mix test test/path/file_test.exs

它完成了,它讓我進入一個等待斷點的常規 iex 提示符。 偉大的! 但是我不知道如何重新運行測試,所以我必須<Cc> <Cc> <up> <enter>再次運行它。 這有點痛苦,似乎沒有必要。

我想在 iex 中運行它,這樣我的pry斷點就可以工作了。 有沒有辦法從 iex 提示符中再次重新運行初始測試/混合命令?

有一種方法可以做到這一點,但這很沒有吸引力。 Mix 會跟蹤所有已無限期運行的測試(直到 VM 死機)。因此啟動iex -S mix並執行Mix.Task.run "test'將在第一次工作,但會假設 "test" 任務已經運行在第二次調用

ExUnit 也有 state 假設被初始化一次(所有測試套件都運行)並在你運行測試時被清空。 不幸的是,該初始化發生在測試的編譯時,請參閱 ExUnit.Case 源

 @doc false
  defmacro __before_compile__(_) do
    quote do
      if @ex_unit_async do
        ExUnit.Server.add_async_case(__MODULE__)
      else
        ExUnit.Server.add_sync_case(__MODULE__)
      end

      def __ex_unit__(:case) do
        %ExUnit.TestCase{name: __MODULE__, tests: @ex_unit_tests}
      end
    end
  end

解決方案:

$MIX_ENV=test iex -S mix phx.server
iex(1)>Mix.Tasks.Test.run(["test file path"])
iex(2)>Kernel.ParallelCompiler.files(["test file path"]) 
iex(3)>Mix.Tasks.Test.run(["test file path"])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM