0 Tage Serie
csharp / intermediate
Snippet

Modulares Testen durch Interface-Injection ermöglichen

Indem Sie im Konstruktor ein Interface anstelle einer konkreten Klasse verlangen, entkoppeln Sie die Geschäftslogik von der Infrastruktur. Dies ermöglicht Unit-Tests, da Sie eine 'Mock'-Implementierung des Interfaces injizieren können, die keine echte Datenbank oder ein Dateisystem berührt.

snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
public interface IDataStore { void Save(string data); }
public class Processor
{
private readonly IDataStore _store;
public Processor(IDataStore store) => _store = store;
public void Run(string input)
{
// Logic here...
_store.Save(input);
}
}
Erklärung
1
public interface IDataStore
Definiert einen Vertrag zum Speichern von Daten, ohne festzulegen, wie dies geschieht.
2
public Processor(IDataStore store)
Der Konstruktor akzeptiert jedes Objekt, das das Interface implementiert (Dependency Injection).