csharp / intermediate
Snippet
Externen Status isolieren mit Schnittstellen-Abstraktionen
Die Abstraktion externer Systeme wie der Systemuhr hinter einer Schnittstelle ist entscheidend für Tests. Es erlaubt die Injektion eines 'Mock'-Providers während Unit-Tests, um ein festes Datum zurückzugeben und deterministische Testergebnisse sicherzustellen.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
public interface IDateTimeProvider{DateTime Now { get; }}public class ReportGenerator{private readonly IDateTimeProvider _dateTime;public ReportGenerator(IDateTimeProvider dateTime) => _dateTime = dateTime;public string GetHeader() => $"Report generated on: {_dateTime.Now}";}
Erklärung
1
public interface IDateTimeProvider
Definiert einen Vertrag zum Abrufen der aktuellen Zeit, ohne direkt an System.DateTime gebunden zu sein.
2
public ReportGenerator(IDateTimeProvider dateTime)
Verwendet Konstruktor-Injektion, um eine spezifische Implementierung des Providers zu erhalten.