問題タブ [hspec]
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.
haskell - Haskell - 関数が呼び出されたことをアサートする
関数が Haskell HSpec で呼び出されたことを確認することは可能ですか?
データを変換する2 つの関数fooとbarがあると仮定します。
そして 、2 番目の引数として「f」または「b」を受け取ったかどうかに応じて、スタッフにfooまたはbarを適用し、適用された関数の結果を返す関数があります。
そして、私のテストでは、各関数 foo と bar を包括的にテストしましたが、その影響をapplyでテストしたくありません。
関数 foo または bar が呼び出されたことを確認することはできますか? 適用するために渡される引数に応じて?
haskell - Haskell のエラーを生成する Cabal テスト
私のMain.hs
ファイルはコマンドライン引数を取ります:
私がテストしようとするときを除いて、これはうまくいきます。私のテストファイルは
それでも私が実行するcabal test
と、それはまだ私に与えます
args
inへの呼び出しが原因で失敗していると確信しています。Main.main
実行可能ファイル自体が正常に動作し、他の場所で使用されていないことがわかり!!
ます。
テストを実行するにはどうすればよいですか?
編集: でパターン マッチングを使用Main.hs
:
そしてエラーは今です
EDIT 2grade.cabal
:私のファイル全体
haskell - 特定のデータ フィールドの値を気にしないことをどのように簡単に表現できますか?
私はパーサーのテストを書いていましたが、これは最善ではないかもしれませんが、これまでのところうまくいきました。テストは、次のように、すべてのコード ブロックに対して完全に定義された AST 表現を想定しています。
しかし、より複雑なケースに移ると、より「あいまいな」検証が必要になりました。
この例ではundefined
、解析結果と比較したくないフィールドを示しています (文字列リテラルのソース位置です)。現在、私が見ている唯一の修正方法は、コードを書き直して のshouldSatisfy
代わりに使用するshouldBe
ことです。他の解決策が見つからない場合は、これを行う必要があります。
haskell - HSpec と QuickCheck を使用して Data.Monoid プロパティを確認する
HSpec と QuickCheck を使用して、モノイド (結合性と同一性要素) のプロパティを検証しようとしています。特定のインスタンスを検証するつもりですが、ほとんどのコードはポリモーフィックに保ちたいと考えています。これは私が数時間後に思いついたものです:
私が持ちたいのはポリモーフィックです
実際の Monoid インスタンス (Sum、Product) とタイプ (Int、Double) を後で指定します。問題は、型チェックを行わないことです。私は得続けます
ポリモーフィック バージョンのモノイドを Arbitrary、Eq、および Show に制約する必要があることはわかっていますが、その方法がわかりません。
問題は、モノイドの仕様をポリモーフィックな方法で表現し、コードの重複を回避する方法です。
unit-testing - 単体テストのメイン関数: インポート自体のエラー
(小さな) 実行可能ファイルを作成しようとしています。Cabal を使用してセットアップし、HSpec を使用して単体テストを行いました。ほとんどすべてのコードは別のモジュールにありLibrary
、 の本体を含めて、関数main
としてメイン モジュールにインポートします。run
関数はmain
可能な限り短くなりましたが、実行関数と等しいことを確認する、または他の方法でテストするなど、テストを作成する方法はありますか? 問題は、私の仕様ファイルが別のMain
モジュールを定義していて、別のモジュールから何もインポートできない (または少なくとも方法がわからない) ように見えることMain
です。
たとえば、次のことを試してみると
次に、エラーが発生します。
メイン関数をテストする方法はありますか?
haskell - Cabal から HSpec へのオプションの提供
hspecを始めようとしています。私は QuickCheck を使用して動作するケースを持っていますが、実行時にもう少し詳細が必要cabal test
です。hspec からこの記事を見つけました。実行可能ファイルの実行時に、より詳細な制御を提供する方法が説明されています。現在、haskell パッケージの初期化に使用hi
しているため、cabal テスト スイートは次のようになります。
私の推測では、「デフォルトのコマンドライン引数」のようなものですが、それは正しくありません。hspec スイートに引数を指定するにはどうすればよいですか?
また、これは重要かもしれません。hi
テスト スイートを分割して、次のコンテンツのみが含まれるようにしSpec.hs
ます。
ただし、すべてのテストとコードは にありtest/MainSpec.hs
、これにより と がエクスポートmain
されspec
ます。
unit-testing - Yesod で hspec テスト ケースにより多くの値を渡す
私は現在のテスト フィクスチャを強化するために、(タイプのApp
) ファンデーション以上のものを hspec テスト ケースに渡しています。IO (App, Text)
以下の例では、直接返すのではなく、追加の Text 値をタプル内に (as として) 渡しています。IO App
などのinnerSpec
関数を使用して通常の Yesod テストを実行できるように正しく構造化する方法がわかりませんが、これらの仕様で値を読み取って使用できるようにすることもできません。post
statusIs
Text
Yesod がなくても、次のようなことができます。
それは問題なくビルドされますが、Yesod がミックスに入るとすぐに型を正しく取得できません。アドバイス?