問題タブ [fscheck]

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.

0 投票する
1 に答える
59 参照

f# - プロパティ ベースのテスト スイートに構成を適用するにはどうすればよいですか?

プロパティ ベースのテスト スイートに構成を適用するにはどうすればよいですか?

私は次のことを試しました:

ただし、Configメンバーはプライベートに設定されており、コンパイルされません。

助言がありますか?

0 投票する
0 に答える
94 参照

f# - 複雑なケースで縮小を利用する方法

FsCheck を使い始めたばかりです。いくつかのテスト データを生成する必要があります。ここでTestDataは、テストへの入力を表します。

私の生成コードは次のようになります。

したがって、これは機能しArb.Default.Blabla().Generatorますが、サイズパラメーターを渡すことができないため、テストで縮小を利用できないため、への呼び出しは好きではありません。たとえば、 を に縮小しFrob optionたりNone、より単純な を選択したりしstartTimeます。このような単一の値を生成するときに、そのサイズ パラメータを伝播する方法はありますか? - また、ひどい初心者の間違いを指摘していただきありがとうございます。私は本当にこの API の使用方法を理解しようとしています。

0 投票する
3 に答える
99 参照

f# - 逆方向パイプライン演算子を使用するとコンパイル エラーが解決されるのはなぜですか?

次の行は、コンパイラによって受け入れられます。

ただし、後方パイプライン演算子を括弧に置き換えると、次のエラーが表示されます。

型の不一致。Arbitrary を期待 -> 'a が与えられた ('b -> 'c) -> プロパティ タイプ 'Arbitrary' はタイプ ''a -> 'b と一致しません

このエラーの意味がよくわかりません。逆方向パイプライン演算子はコンパイルされるのに、括弧がコンパイルされないのはなぜですか?

付録:

0 投票する
1 に答える
75 参照

unit-testing - F# の nan 値に対するプロパティ テストの簡潔で一般的な方法は何ですか?

FsCheck を使用して F# でいくつかのプロパティ テストを行っています。したがって、入力引数に関係なく、特定の条件が常に成立することを保証したいと思います。

値に対して自明な恒等関数を定義するとしfloatます。

次に、常に保持する必要があるとわかっているこの関数のテストを定義します。

これは簡単なテストです。float ID 関数を呼び出すと、入力された float と同じ値が返されることを確認しているだけです。

次に、この関数を FsCheck にプラグインします。

残念ながら、このプロパティ テストは失敗します。

もちろん、振り返ってみると、これが起こることは明らかでしたnan <> nan

F# の構造的な比較により、これは、コレクションを含む (わずかに) より複雑なテスト ケースでも問題になる可能性があります。

float リストに対して同様の関数を設計すると、次のようになります。

また同じ問題!


明らかに、独自の等値テスト関数を作成することでこの問題を回避できます。これは値には問題ありませんが、カスタム等値関数で使用を開始し、一般にコードを個々のコレクション型に特化する必要がfloatあるため、コレクションに拡張するのはより複雑になります。 .listList.forall2

F# でこの問題を解決する一般的な方法はありますか?

0 投票する
1 に答える
101 参照

f# - 2 つの Arbitrary インスタンスを組み合わせてテスト メソッドのシグネチャと一致させる方法

テスト用に 2 つの実際のパラメーターを取得する関数があります。両方の値は、完全に恣意的であることができない適切な形式である必要があるため、Arbitrary インスタンスによって作成されます。
だから私は次のコードを作成します

しかし、これら 2 つの Arbitrary インスタンスを結合して、テスト メソッドのシグネチャと一致させるにはどうすればよいでしょうか?

0 投票する
1 に答える
146 参照

f# - モデルベースのテストが機能しない

演習として、2 ~ 3 本のフィンガー ツリーを実装したいと考えました。これは、 FsCheckのモデルベースのテストを試す絶好の機会です。新しい実験版を試すことにしました。

これまでのところ、テスト マシン用のコマンドを 1 つだけコーディングしました。完全なコードはGitHubで入手できます。

私が理解しているのは、単一の要素を持つ 1 つから 1 つOperation<_>.Runを構築するために 2 回実行されるということです。ResizeArrayその後Operation<_>.Check、同じ番号で 2 回実行され、1 つの要素に挿入されますFingerTree<_>

2 つのパスの最初のパス。単一要素ツリーを追加すると、最初のコマンドの後のモデルとよく比較される (正しい) 2 要素ツリーになります。

2 番目のコマンドは常に失敗します。Checkより大きなResizeList(現在は 3 つの要素) で呼び出されますが、最初のコマンドと同じ単一要素の Tree です。もちろん、要素をもう 1 つ追加してもサイズ 3 にはならず、テストは失敗します。

Checkコマンドを実行するには、更新されたモデルを から返す必要があると予想していました。ただし、 a を返す必要があるPropertyため、それは不可能です。

これにアプローチする方法を完全に誤解しましたか?動作するモデルベースのテストはどのように作成する必要がありますか?

0 投票する
1 に答える
1171 参照

c# - F# で xUnit と FsCheck を使用したメソッドによって例外がスローされたかどうかを確認する方法

xUnit と FsCheck を使用して F# で記述されたテストを使用して、C# で Diamond Kata を実行しています。 t 発音記号のないアルファベット)。コードは次のようになります。

テストされているメソッド:

テスト:

私のアプローチの問題は、テストでは例外がスローされないと示されていますが、テストスイートによって表示された入力でアプリケーションを実行すると、例外が発生することです。

テスト スイートによって表示されるメッセージは次のとおりです (意図的にテスト名とスタック トレースを省略しました)。

テスト スイートは値に対して')'例外がスローされないと言っていますが、手動でテストを行ったところ、予想される例外が実際にスローされました。

例外がテストによってキャッチされることを確認するにはどうすればよいですか?

0 投票する
1 に答える
344 参照

f# - Xunit で FsCheck を実行する方法

こんにちは、次の例外を使用してFsCheck.Xunitテストを実行しようとしています:xunit.runner.console

私はMark Seemann の話を追おうとしています。私のセットアップは次のとおりです。

2 つのファイルを持つ単一のライブラリ タイプのプロジェクトがあります。1 つはテストするコードを含み、もう 1 つはテスト コードを含みます。プロジェクトは問題なくコンパイルされます。私は VS IDE を使用していませんが、F# 用の Ionide プラグインを備えた VSCode テキスト エディターのみを使用しています。

FSharp.Coreのバージョン指定の有無にかかわらず、ナゲットのインストールの有無にかかわらず、さまざまなセットアップを試しましFSharp.Coreた。

さらにどこを見るべきか考えはありますか?アイデアが枯渇し、イライラしています。私はすでにこれに2日を費やしました。:)

0 投票する
1 に答える
293 参照

f# - fscheck はランダムな十分なデータを生成しません

私は FsCheck で遊んでいるので、この実装があります:

...そしてこの FsCheck ベースのテスト:

そして、テストは決して失敗しません。私の推測では、ランダム ジェネレーターによって生成される 100 個の値は 100 より大きくなることはありません。

値はもっと「ランダム」であるべきではありませんか?