2016-04-27 6 views
1

コードがlein testで開始されたかどうかは、実行時に検出するにはあまりにも汚い方法はありませんか?私はちょうど別のredisデータベースを選択したいので、environのようなソリューションや異なるリソースファイルを使用するのはちょっと残酷すぎるようです。テストモードの検出

たとえば、leiningenは自動的にテストプロファイルを有効にしますが、現在有効になっているプロファイルのリストを取得する方法が見つかりませんでした。

+0

http://stackoverflow.com/questions/32323572/ - 2番目の回答ですか?それは環境が行く方法だと思われる。 – birdspider

答えて

0

簡単な方法はありません。 lein.testclojure.testもこのような情報を公開していません。あなたがleinテストのいくつかの個人的な変数、またはclojure.testをハックする方法を見つけて、あなたのコードがlein testの一部として実行されているかどうかを調べるためにそれをチェックしたとしても。

しかし、それは非常に大きな問題があります:あなたの製品コードは、ライブラリのコード(例えばclojure.test)またはさらに悪いビルドツールコード(lein testプラグインコード)をテストrequireする必要があります。

プロダクションコードでそのような設定var(ダイナミックかどうか)を定義し、フィクスチャを使用してテストで設定することができます。

システムプロパティや環境変数などの外部変数(たとえば、environを使用して)に基づいてアプリケーションを動的に設定するのが最善の解決策です。このようにして、必要なだけ多くの異なるコンフィギュレーションセット(例えば、プロード対ユニットテスト対統合テスト対パフォーマンステストなど)を持つことができます。

0

これは過度のように見えるかもしれませんが、コンポーネントは、このような正確な用途のために発明されています。または一般的な依存性注入。

私は一緒に私の独自のテンプレートを入れて、なぜ私は私が始めるために必要なすべてがlein new ...
を実行されるように、これは回避するために私の解決策である、それだけで民間プロジェクト感じだと、難しいものが不要などザッツを知っています"単に別のredisデータベースを選択したい"というケースがあります。

編集これは、Webフレームワークのためのテンプレートです:https://github.com/sveri/clospが、これらの部品の多くは、ウェブdevの、特に部品の一部に固有のものではありません。https://github.com/sveri/closp/tree/master/resources/leiningen/new/closp/clj/components
私はテストの使用を作る統合テストもあります具体的には:https://github.com/sveri/closp/blob/master/resources/leiningen/new/closp/integtest/clj/web/setup.clj

+1

はgithubのこのテンプレートですか? :-)それがあなたに特有のものであっても、あなたが他の人から学ぶ事例がもっとあることは素晴らしいことです –

関連する問題