エリクサーとテストの壁


私が何度も何度も経験する傾向があります:
  • 新しい生成するElixir / Phoenix プロジェクト
  • 新しいモデルを作るために超クールフェニックス発電機を使用してください
  • モデルを実質的に変える
  • モデルで生成されたテストが現在壊れていることを理解する
  • 私がこの状況に乗るときmix text エラーの膨大な数を生成します.いくつかの理由で、私は常にエラーリストの先頭にスクロールし、最初の1つの生産には、エラーのすべてを修正するには、明確な端末、実行中のコマンドは、コマンドを実行すると、スクロールを繰り返します.

    テストを実行する🧘
    私が最初のことは、この状況では心のいくつかのプレゼンスを取得し、前方に移動するテストを実行して停止します.いいえ、すべてのテストではなく、確かにそれは確かにファイルを削除し、テストを忘れることができます.いいえ、一度に1つのテストにテストランナーを教えてください.
    インex-unit , フェニックスに組み込まれているElixirのテストフレームワークは、これは“タグ”と呼ぶもので行うことができます.

    どのようなタグですか?
    テストタグは、プログラマがプロジェクト全体でテストを分類することができる非常に柔軟な機能であり、タグに基づいてテストの全体の選択を含めるか除外します.

    例えば?
    その1つの例は、「遅い」テストをタグ付けして、倉庫の主な枝にマージの前に実行するだけのそれらを構成することです.

    話題に戻る
    さて、トピックに戻ると、ここでは1つのテストを一度に実行するタグを使用します.まず最初に、壊れたスイートの最初のテストを見つけて、その行の上にこの行を追加します.
    @tag :focus
    test "does a thing when I do a thing", %{
    ...
    
    ここでは、このテストは、タグ付きであると宣言しましたatom 「焦点」.今、私はこのテストを実行することができます--only テストコマンドへのタグ:
    mix test --only focus
    
    さて、他のすべてのテストはスキップされ、タグ付きテストだけが実行されます.テストを修正したら、次のテストにタグを移動します.私がすべてのテストを固定したならばdescribe ブロックし、彼らはすべて一緒に働いていることを確認したい、私はそれを移動することができます@tag :focus 右側の線describe ブロックし、テストのすべてが実行されます.ええ!

    キーボード疲労🥱
    テストの壁を通して働くとき、疲れているもう一つのものは、私の端末へのコマンド・タギングです.mix_test_watch 救助に!このパッケージは、すべてのファイルの変更後にあなたのテストを再実行し、通常のテストコマンドと同じ引数を受け取ります.
    ちょうどあなたにそれを加えてくださいmix.exs ファイル
          ...
          {:phoenix_ecto, "~> 4.1"},      
          # 👇 Add this line
          {:mix_test_watch, "~> 1.0", only: :dev, runtime: false},
          ...
    
    と変更test to test.watch CLIコマンドで
    mix test.watch --only focus
    

    それはラップだ🌯
    あなたが私のような場合は、これらの2つの手順を実際に何が間違って壊れたテストでは、代わりにちょうど赤いテキストの大規模な壁を恐れてあなたの端末を閉じて、Twitterを閲覧するまでは、最初の場所でprocrastinatedだった忘れてしまうまでを参照してくださいに役立ちます.