問題タブ [midje]
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.
clojure - Midjeでは、実際に「提供」はどのように実装されていますか?
私はTDDについてClojureinActionの第8章を読んでいて、スタブマクロを試しました。動的バインディングメカニズムを使用して関数をスタブします。残念ながら、Clojure 1.3では、非動的変数にバインディングメカニズムを使用することはできないため、関数動的を指す変数を明示的に宣言しない限り、ほとんどの場合、スタブマクロは機能しません。次に、Midjeでスタブがどのように行われるのか疑問に思い、「提供された」のソースを見つけようとしましたが、見つかりませんでした。だからここに行きます:
Midjeでは、実際に「提供」はどのように実装されていますか?誰かがこれを詳細に説明できますか?
clojure - Midje、期待どおりに機能しない場合
次の Midje テストを作成しました。
次の関数を (別の名前空間で) テストします。
テストはかなり役に立たないように見えるかもしれませんが、私はミジェに慣れようとしているだけです. どういうわけか、関数 idset が実行されるだけです。これは、provided-clause で戻り値を提供することで防止したいと考えていました。これについて何が説明できるでしょうか?
編集: 上記の状況を再現したい場合に備えて、プロジェクトを Github にアップロードしました: https://github.com/Borkdude/twitter-utils
macros - Clojure+Midjeを使用したマクロ操作の再定義
バックグラウンド
私はClojureを初めて使用するので、明白なエラーはご容赦ください。redis-clojureライブラリを使用するClojureデータアクセスコードをテストしようとしています。もちろん、統合テストではフルスタックをテストしますが、単体テストをRedisサーバーインスタンスへの接続に依存させたくありません。Midjeを使用して実際のRedisコマンドをモックするのは比較的簡単なようですが、接続マクロの処理はより困難です。
必要な提案
Midjeのドキュメントではできない、または見つけられないのは、redis接続をモックする方法またはマクロを再定義する方法です。core.cljの関連するトップレベルの接続マクロは次のとおりです。
テストコードでマクロを再定義できないようです。結果を生成するには本体を実行する必要があるため、マクロを関数でラップしても、それ以上先に進むことはできません。私が理想的にやりたいのは、接続マクロに渡された本体を実行し、残りのマクロを破棄することです。何か案は?
unit-testing - midje ファクトの一時ディレクトリの設定と破棄
これは私が達成したいことの骨格です
midje テスト フレームワークは、レキシカル スコープへのアクセスを提供します (最後までスクロールします)。だから、これは私が期待するものです:
しかし、コンパイラはシンボルを解決できないと文句を言いますtemp-dir
。これを機能させる方法はありますか?
vim - clojure と midje 1.4.0 を使用して単一の名前空間からテストを実行する
leiningen を使用せずに、clojure repl の 1 つの名前空間からmidje 1.4.0ユニット テストを呼び出したいと考えています。
背景は、プロジェクト内の他のすべてのテストなしで、vim のショートカットからそれらを呼び出したいということです。私はvimclojure-staticと前戯を使用しています。
どうすればそのようなことができますか?私は既にmidje docuを検索しました。midje 1.5への道はあるようですが、まだアルファ版であり、あまり快適ではないようです。
現在、すべての名前空間に対してコンソールからmidjeを実行していますが、あまり快適ではありません。
clojure.test については、次のショートカットを使用できます。midje についても同様の方法を使用していただければ幸いです。
関連する部分は次のとおりです。
読んでくれてありがとう。
clojure - 「pcalls」の使用時にClojure Midjeが「提供」される
私はClojureにかなり慣れていないので、関数へのいくつかの呼び出しを並列化しようとしています.
次のようなマップがあるとします。
キーと値を my-function という関数の引数として使用し、キーと値のペアごとに呼び出される関数を使用したいと考えています。doseq
以下のように使用できます。
次に、my-function の呼び出しを並列にすることにしました (実際の状況では、my-function は互いに独立した残りの呼び出しを行うため、それらを並列で実行したいと考えています)。私は次のことを思いつきました:
これは期待どおりに動作するようです (私が間違っている場合、またはより良い方法がある場合は修正してください)。私が今抱えている問題は、Midje テストに合格することです。doseq
上記のバージョンを使用すると、正しく通過します。私のテストでは、正しい呼び出しが行われることを確認するために (提供された .... ) を使用しています。これを使用して、my-function の呼び出しを確認したいと考えています。これを行うことは可能ですか?pcalls に関する多くの情報を見つけるのは難しいと感じています。
ありがとう
- - - - - 編集 - - - - -
失敗を示す例を考案しました。
実装はここにあり、テストはここにあります。単一のテストは正常に実行されることがわかりましたが、複数のテストでは次のことが発生します。
(pcalls_unit.clj:29) で FAIL これらの呼び出しは適切な回数行われませんでした: (my-func 2 2) [少なくとも 1 回は期待されていましたが、実際には呼び出されませんでした]
FAIL "Test some pcalls 3" at (pcalls_unit.clj:26) Expected: nil 実際: java.util.concurrent.ExecutionException: java.lang.Error: pcalls-test.pcalls/my- の前提条件を作成したようですMidje 自身のコードでのその関数の使用を妨げる func。修正するには、my-func を使用する独自の関数を定義し、提供された句にその関数を記述します。
testing - ミジェ・ファクトの動的に計算された説明
このように、いくつかの一般的な事実を因数分解する関数を書きたい
しかし、それは事実の説明として「42 奇数ではない」という結果にはなりません。同様の効果が表形式の事実で達成できることは知っていますが、そのような事実を事実グループ間で共有できるようにしたいと考えています。
unit-testing - midje を使用して、slingshot の throw+ を使用してスローする関数をモックできないのはなぜですか?
状況は次のとおりです: 関数 B を呼び出す関数 A を単体テストしようとしています。関数 B を midje テストでモックして、try+ ブロックの catch が実際にキャッチするものを返すようにしたいと考えています。しかし、投げるのに適したものを作成できないようです。コードとテストの大幅な簡略化されたスケッチを次に示します。
私がスローしている ExceptionInfo は、ほぼ正しいようです。これは、アプリケーションが多数の prn ステートメントを実行しているときに確認できます。しかし、私が何をしようとしても、テストを機能させることができません。
また、問題を理解できるかどうかを確認するために、repl で以下のコードを少し試しました。ただし、コードの両方の部分には同一の例外が含まれているように見えますが、1 つ (純粋なスリングショットのもの) だけが「キャッチされた」をキャッチして出力することができます。一方が機能し、他方が機能しない理由を理解できれば、単体テストで問題を解決できると思います。
unit-testing - Clojure 単体テスト : 関数が呼び出されたかどうかを確認する
clojure 関数の単体テストを書き込もうとしています (clojure.test を使用していますが、必要に応じて midje に切り替えることができます)。
次のような関数があります。
この機能を単体テストするとき、次のテストケースを書きたいと思います:
関数 generate-sky-nodes が呼び出されたことをどのように主張できますか? か否か ?私は C# または Java でモック フレームワークを使用しますが、clojure については知りません。