コードがlein test
で開始されたかどうかは、実行時に検出するにはあまりにも汚い方法はありませんか?私はちょうど別のredisデータベースを選択したいので、environのようなソリューションや異なるリソースファイルを使用するのはちょっと残酷すぎるようです。テストモードの検出
たとえば、leiningenは自動的にテストプロファイルを有効にしますが、現在有効になっているプロファイルのリストを取得する方法が見つかりませんでした。
コードがlein test
で開始されたかどうかは、実行時に検出するにはあまりにも汚い方法はありませんか?私はちょうど別のredisデータベースを選択したいので、environのようなソリューションや異なるリソースファイルを使用するのはちょっと残酷すぎるようです。テストモードの検出
たとえば、leiningenは自動的にテストプロファイルを有効にしますが、現在有効になっているプロファイルのリストを取得する方法が見つかりませんでした。
簡単な方法はありません。 lein.test
もclojure.test
もこのような情報を公開していません。あなたがleinテストのいくつかの個人的な変数、またはclojure.test
をハックする方法を見つけて、あなたのコードがlein test
の一部として実行されているかどうかを調べるためにそれをチェックしたとしても。
しかし、それは非常に大きな問題があります:あなたの製品コードは、ライブラリのコード(例えばclojure.test
)またはさらに悪いビルドツールコード(lein test
プラグインコード)をテストrequire
する必要があります。
プロダクションコードでそのような設定var(ダイナミックかどうか)を定義し、フィクスチャを使用してテストで設定することができます。
システムプロパティや環境変数などの外部変数(たとえば、environ
を使用して)に基づいてアプリケーションを動的に設定するのが最善の解決策です。このようにして、必要なだけ多くの異なるコンフィギュレーションセット(例えば、プロード対ユニットテスト対統合テスト対パフォーマンステストなど)を持つことができます。
これは過度のように見えるかもしれませんが、コンポーネントは、このような正確な用途のために発明されています。または一般的な依存性注入。
私は一緒に私の独自のテンプレートを入れて、なぜ私は私が始めるために必要なすべてが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
はgithubのこのテンプレートですか? :-)それがあなたに特有のものであっても、あなたが他の人から学ぶ事例がもっとあることは素晴らしいことです –
http://stackoverflow.com/questions/32323572/ - 2番目の回答ですか?それは環境が行く方法だと思われる。 – birdspider