問題タブ [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# - コントローラーをテストして、承認フィルターが正しい役割でコントローラーに適用されていることを確認するにはどうすればよいですか?
サイトの管理セクションにコントローラーがあり、役割が管理者に設定された承認フィルターで装飾されています。
これはうまく機能しますが、フィルターが削除されていないことを確認するための単体テストを作成したいと思います。これまでのところ、Authorizeフィルターが存在することを検証するために持っています。
Roles引数を検証するにはどうすればよいですか?FluentAssertion1.7.1.1を使用しています。
FluentAssertionv2で可能になりました。
c# - コンストラクターが例外をスローするかどうかをテストするためのより適切なものはありますか?
通常、次のように、特定のメソッドで例外がスローされるかどうかをテストします。FluentAssertionsを使用します:
しかし、コンストラクターで例外がスローされた場合、どのようにテストするのでしょうか。私はちょうどこのようにしましたが、FluentAssertionsを介したより適切な方法はありますか?
fluent-assertions - XELement とその子要素をテストするには?
サンプルの Xml コード スニペットがあります
xml が XElement に読み込まれ、使用しました
私のコードをテストするには、属性のテストはすべて合格ですが、要素のテスト (最後の条件) は失敗します。
誰でも私のコードの何が問題なのか指摘できますか?
Xmlに「値」という名前の要素があり、その値が「変更された名前」であることをどのようにテストできますか?
前もって感謝します!
c# - Fluentアサーションで初期化されていない(null)プロパティを除外する
FluentAssertionsでは、を使用しAllProperties.But(obj => obj.property_I_do_not_want)
て比較アサーションから特定のプロパティを削除できます。これは、無視したいプロパティの名前がわかっている場合は問題ありませんが、私の状況では、単一化されたプロパティのみを無視したいです。今のところ、nullに等しいものは無視してもかまいませんが、デフォルト値に設定されたプリミティブも除外するソリューションがある場合は、非常に便利です。
PropertyAssertions
私はクラスの拡張メソッドを書き込もうとして始めましたが、メソッドに渡すために無視する各プロパティにアクセスするためのIEnumerable<Expression<T>>
を含むを作成する方法を理解できません。Expression<T>
But
c# - 文字列日付比較
BDD テストでは、日付を比較しています。日付を比較するときは文字列です。両方の日付が同じであっても、このメッセージが表示され、テストは失敗します
オブジェクトは「01/20/2012 12:00:00 AM」であると予想されていましたが、「1/20/2012 12:00:00 AM」が見つかりました。
もう1つ、これは私のシステムでのみ発生します。別の開発者にテストの実行を依頼すると、テストは問題なくパスします。不足しているタイプの設定はありますか?
そのコード部分は
customer はハッシュ テーブルです。この特定のステートメントは、他のマシンではOKを渡しますが、私のものではありません。
文字列比較の代わりに日付比較に変更することで修正できることはわかっています。しかし、これは他のマシンでは問題ないので、興味がありました。
c# - 等価オプション付きの Should().Contain()
Claim
のコレクションに期待される一連のクレームが含まれていると主張しようとしています。私が直面しているように見える問題は、サブセットをチェックして独自の等価オプションを提供する方法がないことです。
私が試したこと...
ID のクレームが期待されたセットと正確に一致しない場合、これは失敗します。たとえば、それらのクレーム以上のものがある場合です。
型が実装していないメソッドをContain
単に使用しているため、これは失敗します。object::Equals
Claim
私が必要としているのは何らかの方法ですContain
が、エクスポーズと同じ等価オプションを使用しますShouldAllBeEquivalentTo
。おそらくShouldBeEquivalentTo
私が望んでいたものだと思いましたが、それはコレクション内のアイテムではなく、コレクション オブジェクト自体をアサートするためのものです。
c# - FluentAssertions: ShouldBeEquivalentTo メソッドは引き続き Object.Equals() を呼び出しますか?
私はクラスを持っています。それを と呼びましょうFoo
。これは値型であり、したがってEquals
/GetHashCode()
メソッドをオーバーライドします。別のテスト フィクスチャで、同等性のために使用されるプロパティだけでなく、Foo のすべてのプロパティが適切に設定されていることを確認したいと思います。このため、私のテスト アサーションShouldBeEquivalentTo
では、「オブジェクトのタイプに関係なく、両方のオブジェクト グラフに同じ値を持つ同じ名前のプロパティがある」場合に、ドキュメントが示唆するメソッドを具体的に使用します。
ただし、メソッドをShouldBeEquivalentTo
呼び出し、真の結果を取得してから、約束Foo.Equals
されたリフレクション ベースのプロパティ マッチングを短絡するように見えます。ShouldBeEquivalentTo
これは予想される動作ですか?そうである場合、FA ソースを調べたところ、この動作を変更する簡単な方法は見つかりませんでした (IEquivalencyStep
は内部で宣言されています)。これを回避する他の方法はありますか?
編集: Dennis: はい、比較している 2 つのオブジェクトは同じタイプです。要約すると、私はクラス Foo をオーバーライドEquals
しましたが、FA がこの等価概念を単体テストに使用することを望んでいません。
c# - アサーションによる Simple.Data の拡張
私はこの非常に優れたミニ ORM であるSimple.Dataを使用して、多くのテスト データをすばやく簡単にセットアップしています。アサーション用に拡張したいと思います。たとえば、カウントでアサートしたいと思います:
FluentAssertions で行うように多かれ少なかれ評価できるように。次のようになります。
しかし、ダイナミクスの利点を失わずにこれを行うのは非常に難しいと思います。
これをどのように行うことができるか、または理由の範囲内で可能かどうかのヒントを誰かが持っていますか?
私は現在、GitHub で src をトラバースして、これをローカルで実行できる方法を見つけようとしており、方法を見つけるために即席でいじっています。
c# - ShouldBeEquivalentTo を使用するときに IEnumerable のすべての項目のプロパティを除外するにはどうすればよいですか?
私の NUnit/FluentAssertions テストでは、次のコードを使用して、システムから返された複雑なオブジェクトを参照オブジェクトと比較します。
しかし、これはまさに私が意図したものではありません。0番目だけでなく、リスト内のすべてのオブジェクトを除外Name
したいと思います。このシナリオを実装するにはどうすればよいですか?Article
Items
私はドキュメントに目を通しましたが、解決策が見つかりません。何か不足していますか?
c# - C# でジェネリック コレクションの参照等価性をテストするのはばかげた考えですか?
私は不変の辞書の特別なケースを実装していますが、これは便宜上IEnumerable<KeyValuePair<Foo, Bar>>
. 通常ディクショナリを変更する操作は、代わりに新しいインスタンスを返す必要があります。
ここまでは順調ですね。しかし、クラスの流暢なスタイルの単体テストを作成しようとすると、私が試した 2 つの流暢なアサーション ライブラリ ( ShouldとFluent AssertionsNotBeSameAs()
) のどちらも、実装するオブジェクトの操作をサポートしていIEnumerable
ないことがわかりました。それらにObject
。
私が最初にこれに遭遇したとき、Should で、それはフレームワークの単なる穴だと思いましたが、Fluent Assertions に同じ穴があるのを見て、そう思いました (私は C# に比較的慣れていないため)。 C# コレクションに関する概念的な何かが欠けている可能性があります。
明らかに、これをテストする他の方法があります-キャストしObject
て使用するNotBeSameAs()
、単に使用するObject.ReferenceEquals
など-しかし、そうしない正当な理由がある場合は、それが何であるかを知りたいです。