GOOGLE ADS

Freitag, 15. April 2022

Der beste Weg, um die System.Net.WebSockets ClientWebSocket-Klasse zum Komponententest (nunit) zu verspotten

Ich habe die ClientWebSocket-Klasse für die WebSocket-Kommunikation verwendet. Wie verspottet man die Klasse am besten?


Lösung des Problems

Nehmen wir an, Sie haben den folgenden Code

class MyDependentClass {
private AnyDependency _dependency;
MyDependantClass(AnyDependency dependency){
_dependency = dependency;
}
void DoSomethingWithDependency() {
_dependency.MethodCall();
}
}

In Ihrem Komponententest können Sie entweder eine Instanz von AnyDependency mit simulierten Parametern erstellen. Oder, und das würde ich vorschlagen, Sie kapseln Ihre Abhängigkeit und invertieren sie.

interface IAnyDependencyWrapper {
void MethodCall();
}

Erstellen Sie dann eine Klasse, die Ihre Schnittstelle implementiert und AnyDependency verwendet

class AnyDependencyWrapper: IAnyDependencyWrapper {
private AnyDependency _dep;
AnyDependencyWrapper(AnyDependency dep){
_dep = dep;
}

void MethodCall(){
_dep.MethodCall();
}
}

und injiziere es dann in deine Klasse:

class MyDependentClass {
private AnyDependency _dependencyWrapper;
MyDependantClass(IAnyDependencyWrapper dependencyWrapper){
_dependencyWrapper = dependencyWrapper;
}
void DoSomethingWithDependency() {
_dependencyWrapper.MethodCall();
}
}

Jetzt wird die Abhängigkeit von Ihrem Code entkoppelt und Sie können IAnyDependencyWrapper verspotten. Mit dieser Lösung können Sie auch jederzeit die Implementierung von IAnyDependencyWrapper ändern, zB wenn Sie die Abhängigkeit ändern oder mit Breaking Changes aktualisieren müssen

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...