0 Tage Serie
csharp / intermediate
Snippet

Entwurf mockbarer Komponenten für Tests

Durch die Verwendung von Schnittstellen für externe Abhängigkeiten machen Sie Ihren Code testbar. Während Unit-Tests können Sie eine 'Mock'-Implementierung der Schnittstelle anstelle des echten Dienstes übergeben, um das Verhalten ohne Nebenwirkungen zu verifizieren.

snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
public interface IEmailService
{
void Send(string message);
}
public class NotificationManager
{
private readonly IEmailService _service;
public NotificationManager(IEmailService service) => _service = service;
public void Notify(string msg) => _service.Send(msg);
}
Erklärung
1
private readonly IEmailService _service;
Speichert eine Referenz auf die Abstraktion statt auf eine konkrete Klasse.
2
public NotificationManager(IEmailService service)
Constructor Injection ermöglicht das Übergeben verschiedener Implementierungen (echt oder Test) zur Laufzeit.