問題タブ [fluent-assertions]
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.
c# - コレクション内のプロパティの FluentAssertions で Exclude を使用するには?
私は2つのクラスを持っています:
流暢なアサーションを使用して、ClassA インスタンスと比較したいと考えています。ただし、ID は無視したいと思います (保存後に ID が割り当てられるため)。
私はこれを行うことができることを知っています:
コレクション内の ClassB ごとに明らかに繰り返すことができます。ただし、すべての ID を除外する方法を探しています (要素ごとに除外するのではなく)。
この質問を読みましたが、[0] インデクサーを削除すると、アサーションが失敗します。
これは可能ですか?
c# - FluentAssertions でプロパティのデフォルト値をアサートする方法は?
さまざまなタイプのいくつかのフィールド/プロパティなどを持つクラスがあります:
私のコードの一部では、 のみを入力するSomeStringData
必要があり、それを明示的にテストしたいと思います。私はFluentAssertionsを使用しており、
しかし、他の要素がどれも変更されておらず、デフォルト値のままであることをテストするにはどうすればよいでしょうか? もちろん、次のことができます。
しかし、これらの項目にデフォルト値が必要であることをより明確に表現するにはどうすればよいでしょうか?
たとえば、虚数BeDefault
演算子の場合のように:
そのようなオプションはありますか?
c# - ShouldBeEquivalentTo の原因となるオブジェクト参照が設定されていない例外 / ExcludeMissingProperties の定義
概要: Fluent アサーションを使用して単体テストを作成しているときに、以下で詳しく説明するいくつかの問題に遭遇しました。追加情報が必要な場合はお知らせください。ただし、これが実際に予想される動作なのか、何か誤解しているのかはわかりません。
問題 1 は、私が観察しているインスタンス例外に設定されていないオブジェクト参照です。問題 2 は、ExcludeMissingProperties の定義方法に比べて予期しない動作です。
以下の私の質問では、私が話している問題を実証するのに役立つ次のサンプル クラスを使用しています。
問題 1: 期待値に複合型プロパティが設定されていない場合、オブジェクト参照がインスタンス例外に設定されません。
を。予期されるオブジェクト (期待) が複合型プロパティを設定せず、実際の (サブジェクト) が設定する場合、オブジェクト参照がインスタンスに設定されていないというエラーがスローされます。これは単純なオブジェクトには問題ないかもしれませんが、DTO が大きくネストされている実際のテスト シナリオでは、例外の原因を見つけるのが難しくなります。
b. この例外に関連して、例外を引き起こしたプロパティの名前をスローできれば非常に便利です。これは未処理のシナリオであることを理解しています。
サンプルテスト:
問題 2: ExclusiveMissingProperties の定義 デフォルトの動作を回避するために、多くのコードを作成する必要がありました。
多くのテスト ケースでは、期待値のプロパティを設定したくありません。例:主キーが生成されたことを確認したいデータベース挿入シナリオ(したがって、値がデフォルトであってはならないというのは十分なケースです)が、値が何であるかは気にしません。同様に、私のテスト ケースに関係のない他のノイズ プロパティがあります。
したがって、これは失敗します:
これは合格します:
c# - FluentAssertions: コレクションの各オブジェクトに一致
コレクションの各オブジェクトが特定の述語に準拠していることを確認する方法は? 例: (特定のコレクションからの) 各項目について、特定の述語 ( MyPredicate
) と一致することを確認します。コードはおそらく次のようになります。
そのようなものは利用可能ですか、それとも自分で書く必要がありますか?
fluent-assertions - FluentAssertions を参照する単体テスト プロジェクトがあり、バージョン 3 に更新するとエラーが発生します
私は、 Should()拡張メソッドのメソッドが見つからないという例外をスローしている .net 4.0 テスト プロジェクトを持っています。
次に、int 型に対しても例外をスローしていることに気付きました。
FluentAssertions V3 がこのように動作する理由を知っている人はいますか?
今のところ、バージョン 2.2 に戻します。
参考までに、これは FluentAssersions プロジェクトの Web サイトhttps://github.com/dennisdoomen/fluentassertions/releasesです。
コードサンプルは次のとおりです。
ここに例外があります:
c# - FluentAssertions 参照が正しくインポートされない
FluentAssertions 1.7.1 (現在、すべての単体テストが書かれています) をダウンロードすると、dll への参照を行うことができ、以下のテストは問題なく動作します。
しかし、NuGet 経由で FluentAssertions バージョン 3.0.90 を使用してアップグレードしようとし、3.0.107 も試しました。問題が発生した後、新しいソリューション/クラス ライブラリ プロジェクトを作成しようとしましたが、ライブラリから何も検出できません...
以下のテストは、.Should
拡張メソッドが見つからないため、コンパイルされませんbool
。しかし、オブジェクト ブラウザーに存在することがはっきりとわかります。アセンブリ参照にはFluentAssertionsとFluentAssertions.Coreが表示されますが、オブジェクト ブラウザーにはFluentAssertions.Coreしか表示されません。Intellience が拡張メソッドに対して見つけたように見える唯一のものは.ShouldRaisePropertyChangeFor<...>
and.ShouldNotRaisePropertyChangeFor<...>
です。
私のプロジェクトは .Net4.0 をターゲットにしており、現時点では構成の問題だと考えていますが、どこから調べればよいかわかりません。Google の他の誰もこの問題を抱えていないようです。
fluent-assertions - 理由の適切な使用
私のテスト コードには、次のアサートがあります。
testSubscriber.Called.Should().BeTrue("the handler was not called");
失敗すると、次のエラー メッセージが表示されます。
ハンドラーが呼び出されなかったので True が期待されていましたが、False が見つかりました。
英語は私の母国語ではありませんが、これは正しくないように聞こえます。理由には何を書けばよいですか?
c# - FluentAssertions - ShouldAllBeEquivalent および Exluding プロパティ - 予期せず失敗する
dtos の 2 つのリストの内容は同等であると断言したいと思います。ただし、各アイテムの 1 つのプロパティを比較で無視する必要があります。Fluent Assertions documentationの collections & dictionaries サブセクションを読むことから、私の理解では、この行は私が望むことを行うべきであるということです:
合格するはずの単体テストを作成しましたが、このステートメントにより、AssertionException がスローされ、次のメッセージがスローされます。
item[0].ActivityDetails.InternalId は 0 である必要がありましたが、19372 が見つかりました。
item[1].ActivityDetails.InternalId は 0 である必要がありましたが、19374 が見つかりました。
item[2].ActivityDetails.InternalId は 0 である必要がありましたが、19376 が見つかりました。
構成あり:
宣言されたすべてのプロパティを選択する
プロパティ ActivityDetails.InternalId を除外する
プロパティを名前で照合 (またはスロー)
info.RuntimeType.IsSameOrInherits(System.String) の場合にアクションを呼び出す
私はおそらくドキュメントを誤解しています。誰かが私が間違っていることを指摘できますか?
c# - 流暢なアサーションで null と string.Empty (または "") を比較するにはどうすればよいですか?
同じタイプの 2 つのオブジェクトがあります。タイプには文字列フィールドがあり、最初のオブジェクトの値は null で、2 番目のオブジェクトの値は "" です。これが正しいと仮定するように流暢なアサーションを強制するにはどうすればよいですか?
アサーション自体:
ここで例外が発生し、期待値が null であり、実際の値が "" (またはその逆) であることを示します。