0 Tage Serie
csharp / intermediate
Snippet

Unit-Testing ermöglichen durch Interface-Entkopplung

Dependency Inversion durch Interfaces ermöglicht es, echte Implementierungen während des Testens durch 'Mocks' zu ersetzen. Dies stellt sicher, dass sich Unit-Tests auf die Klassenlogik konzentrieren und nicht auf externe Abhängigkeiten wie E-Mail-Server.

snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public interface IEmailService {
void Send(string message);
}
public class UserNotifier {
private readonly IEmailService _service;
public UserNotifier(IEmailService service) {
_service = service;
}
public void Notify(string text) {
if (!string.IsNullOrEmpty(text)) {
_service.Send(text);
}
}
}
Erklärung
1
private readonly IEmailService _service;
Speichert einen Verweis auf die Abstraktion statt auf eine konkrete Implementierung.
2
public UserNotifier(IEmailService service)
Injiziert die Abhängigkeit über den Konstruktor (Constructor Injection).