c# - How to assert a default value of a property with FluentAssertions? -
i have class fields/properties etc., of various types:
public string somestringdata; public int? somenullableintegerdata; public somedataclass somespecificdata; public int someintegerdata;
in part of code, somestringdata
should filled, , want test explicitly that. use fluentassertions , have
actual.somestringdata.should().be("whatever");
but how test, none of other elements not touched , still have default value? could, of course:
actual.somenullableintegerdata.should().nothavevalue("must have no value."); actual.somedataclass.should().benull("must have no value."); actual.somenullableintegerdata.should().be(0, "must have no value.");
but, how express more these items should have default value?
like example imaginary bedefault
operator:
actual.somenullableintegerdata.should().bedefault("must have no value."); actual.somedataclass.should().bedefault("must have no value."); actual.somenullableintegerdata.should().bedefault("must have no value.");
are there such options?
i create extension method
public static void shouldhavedefaultvalue<t>(this t value) { if (!equalitycomparer<t>.default.equals(value, default(t))) throw new assertionexception("must have default value."); }
usage:
actual.somenullableintegerdata.shouldhavedefaultvalue(); actual.somedataclass.shouldhavedefaultvalue(); actual.someintegerdata.shouldhavedefaultvalue();
extending should()
bedefault()
difficult, because there different should()
extensions return different assertions objects - booleanassertions
, stringassertions
, guidassertions
etc. , assertions classes don't have common base class able extent.
Comments
Post a Comment