問題タブ [eunit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - テスト用と本番用で /priv に異なるデータを保持することに関するベスト プラクティスはありますか?
私は EUnit でテストを書いていますが、一部の Units Under Test はfile:consult/1を介してデータ ファイルを読み取る必要があります。私のテストでは、/privで利用できるデータを想定していますが、本番環境ではデータが異なります。これを達成するための最良の方法は何ですか?
私は Erlang のまったくの初心者で、少し見苦しいと感じる解決策をいくつか考えました。例えば、
- 両方のファイルを/privに置き、マクロ (「-ifdef(EUNIT)」など) を使用して、どちらをfile:consult/1に渡すかを決定します。これは私には壊れやすい/エラーが発生しやすいようです。
- Rebar を取得して、適切なファイルを/privにコピーします。
また、根本的に間違ったことをしようとしている場合は、遠慮なく指摘してください。そうかもしれませんね。
これを行うより良い方法はありますか?
erlang - すべての eunit ケースの前にアプリケーションを開始する方法
rebar で管理されている私の Erlang プロジェクトは、別のモジュールに分割されています。
各モジュール*_tests.erl に対して、Eunit Fixturesを使用して環境をセットアップします。例えば、
Makefileは次のとおりです。
ここで問題が発生します。test/ に多くのテスト モジュールがあるため、各テスト モジュールは実行中のフロー全体でアプリケーションを開始および停止します。アプリケーションの起動に失敗し、app.config 構成ファイルが見つからないと言われることがありますが、その理由は不明です。
それで、すべてのテストモジュールの前にアプリケーションを開始する方法はあると思いますか?
erlang - eunit テストで erlang モジュールを作成するために rebar を使用する方法は?
私の目標は非常に単純です。Erlang を学習しているときに、rebar を使用して、eunit テストを含む基本的なモジュールを作成したいと考えています。
私は次のことを試しました:
「test/erlangscratch_tests.erl」を次のように編集します。
テストを実行します。
テストは実行されませんでしたが、コードがコンパイルされていないようです。
私のフォルダの内容は次のとおりです。
質問:どのステップを見逃しましたか?
アップデート:
受け入れられた回答によると、basic_test_
関数の名前を変更する必要があり、「src/erlangscratch.app.src」が見つからなかったため、次の内容で作成しました。
erlang - Rebar eunit は非ネイティブ (非 Hipe) コードを実行します
を使用してErlangモジュールをコンパイルしました
rebar.config で次のオプションを使用する
コンパイル中に Hipe メッセージが表示され、.beam ファイルのサイズも非ネイティブ コンパイルよりも大きいため、コードが実際にネイティブにコンパイルされていることがわかります。
しかし、私が走るとき
私のモジュールをテストする私はいつもfalseになります
テスト中のモジュール内。
rebar が eunit テストをネイティブ コードとして実行しないのはなぜですか?
この行を reltool.config ファイルに追加しました。
鉄筋 2.1.0-pre 17 20140421_192321 git 2.1.0-pre-166-ged88055
erlang - meck を使用して、同じメソッドを同じ引数で複数回呼び出す
ruby/rspec を使用すると、メソッドに対して行われたさまざまな呼び出しに対してさまざまな戻り値を受け取るために、次のようなことができることを知っています。
次のように、meck stub を 1 つの戻り値を持つメソッドにすることしかできませんでした。
ok
最初の呼び出しと2 番目の呼び出しで返す方法はありok2
ますか?
erlang - eunit テストで application:set_env を呼び出す方法はありますか?
テスト中のコードで使用される環境変数を eunit テストで設定することは可能ですか? これは失敗します**error:undef
:
編集:
エラーについて表示するものはあまりありませんが、完全なスタックは次のとおりです。
erlang - 間違ったモジュールを報告する Eunit アサーション エラー
マップでアサーションをテストするのに役立ついくつかの関数を書き始めました。
次のマップがあるとします。
ビジネスロジックで関数を呼び出した後、マップは次のようになると思います。
言い換えれば、私は期待しています
- 更新後に同じ数のキーを持つマップ
a
0 から 1 に変化する値b
不変の値
このテストをパターン マッチングに任せることもできますが、多数のキー (およびおそらく多数のサブマップ) を持つ大きなマップがある場合、問題がどこにあるかは明らかではありません。少なくとも、見つけるのに時間がかかります。問題(更新されると思っていた値が更新されなかった、または余分なキーがあるなど)。
そのため、最初に、モジュールで次のヘルパー関数を思いつきました。
これを、eunit によって実行される別のモジュールから呼び出します。
そして、次のエラーメッセージが表示されます。
これは、マップ内の問題のあるキーと問題のある値を報告するという点で私が望むものですが、アサーションへの参照ではなく、失敗した実際asserts
のテストを見ることに興味があるにもかかわらず、モジュール内にあるエラーを報告しますモジュール。テストジェネレーターはまさにそのために良いと思っていましたが、そのように機能させることはできませんでした.
eunit
モジュールの代わりに実際のテスト モジュール (map_tests
関数/テストsimple_map_test
行 X)をレポートする方法はありasserts
ますか?