Sagen wir eine Methode, die wie folgt aussieht:C#, NUnit: Wie mit der Prüfung von Ausnahmen behandeln und verzögerte Ausführung
public IEnumerable<Dog> GrowAll(this IEnumerable<Puppy> puppies)
{
if(subjects == null)
throw new ArgumentNullException("subjects");
foreach(var puppy in puppies)
yield return puppy.Grow();
}
Wenn ich testen, dass dadurch:
Puppy[] puppies = null;
Assert.Throws<ArgumentNullException>(() => puppies.GrowAll());
Die Test wird fail sagen, dass es
Erwartet:
<System.ArgumentNullException>
Aber war:null
kann ich das beheben, dass der Test
durch ÄnderungPuppy[] puppies = null;
Assert.Throws<ArgumentNullException>(() => puppies.GrowAll().ToArray());
Ist das nur, wie Sie es normalerweise tun würde? Oder gibt es eine bessere Möglichkeit, den Test zu schreiben? Oder vielleicht eine bessere Möglichkeit, die Methode selbst zu schreiben?
versucht, das gleiche mit dem eingebauten in Select
Methode zu tun, und es scheiterte auch ohne ToArray
oder so etwas, so offensichtlich ist es etwas, was Sie dagegen tun können ... ich nicht nur tun weiß was: p
Aaaah, so dass deshalb alle Ihre Methoden so aussehen in der Bibliothek von Ihnen ... Das macht Sinn! Nicht sicher, ob es mir gefällt ... hehe. Muss sagen, ich bevorzuge es in einer Methode zu behalten. Aber gut. Ich nehme an, ich werde mich nach einer Weile daran gewöhnen :) – Svish
Es ist ein unglücklicher Nebeneffekt von Iterator-Blöcken. Siehe http://msmvps.com/blogs/jon_skeet/archive/2008/03/02/c-4-idea-iterator-blocks-and-parameter-checking.aspx –
Genau. Ja, ich habe irgendwie verstanden, warum es passiert ist. Nur nicht, wie der empfohlene Weg, damit umzugehen war :) – Svish