Come posso confrontare Null e String.empty (o "") in acrezioni fluenti?
-
21-12-2019 - |
Domanda
Ho due oggetti dello stesso tipo, il tipo ha un campo di stringa, nel primo oggetto il valore è nullo, nel secondo il valore è "", come posso forzare le aspirazioni fluenti per presumere che questo sia corretto?
Assistrice stessa:
callResult.ShouldBeEquivalentTo(centreResponse,
opt => opt.Excluding(r => r.DateOpen));
.
Qui l'eccezione è sollevata, affermando che il valore atteso è nullo, il vero è "" (o viceversa)
Soluzione
Cosa puoi fare è ignorare il comportamento per le proprietà del tipo string
come questo:
callResult.ShouldBeEquivalentTo(centreResponse, opt => opt
.Excluding(r => r.DateOpen)
.Using<string>(ctx => CompareStrings(ctx)).WhenTypeIs<string>());
public void CompareStrings(IAssertionContext<string> ctx)
{
var equal = (ctx.Subject ?? string.Empty).Equals(ctx.Expectation ?? string.Empty);
Execute.Assertion
.BecauseOf(ctx.Because, ctx.BecauseArgs)
.ForCondition(equal)
.FailWith("Expected {context:string} to be {0}{reason}, but found {1}", ctx.Subject, ctx.Expectation);
}
.
È possibile pulire questo un po 'incapsando il metodo CompareStrings
in un'implementazione di IAssertionRule
.Vedere RelaxingDateTimeAssertionRule
nei test dell'unità di fluentessertions qui .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow