0 Tage Serie
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.