1

FluentAssertionsでは、を使用しAllProperties.But(obj => obj.property_I_do_not_want)て比較アサーションから特定のプロパティを削除できます。これは、無視したいプロパティの名前がわかっている場合は問題ありませんが、私の状況では、単一化されたプロパティのみを無視したいです。今のところ、nullに等しいものは無視してもかまいませんが、デフォルト値に設定されたプリミティブも除外するソリューションがある場合は、非常に便利です。

PropertyAssertions私はクラスの拡張メソッドを書き込もうとして始めましたが、メソッドに渡すために無視する各プロパティにアクセスするためのIEnumerable<Expression<T>>を含むを作成する方法を理解できません。Expression<T>But

4

1 に答える 1

3

2.0ベータ版を試してみたい場合は、新しいShouldBeEquivalentTo()APIでラムダを使用して、次のような特定のプロパティを除外できます。

subject.ShouldBeEquivalentTo(expected, options =>
    options.Excluding(ctx => ctx.PropertyPath == "Level.Level.Text"));

必要に応じて、次のようなカスタムルール(ISelectionRuleを実装するクラス)にこれをカプセル化することもできます。

subject.ShouldBeEquivalentTo(expected, options => 
    options.Using(new ExcludeUninitializedProperties()));

実際、初期オプションを作成するファクトリメソッドをオーバーライドすることで、これを特定のタイプのデフォルトにすることもできます。

EquivalencyAssertionOptions<TSubject>>.Default = () =>    
    EquivalencyAssertionOptions<TSubject>>.Default.Using(new ExcludeUninitializedProperties())
于 2012-09-01T11:49:23.983 に答える