Ich versuche, eine Methode zu erstellen, die ein Testdelegate oder Delegate übernimmt und Parameter an das Delegatobjekt übergibt. Das liegt daran, dass ich einen Test für eine Methode in Controllern erstelle, die alle denselben Parameter (eine ID) haben, und ich möchte keinen Test für alle Controller-Methoden erstellen.
Code, den ich habe:
%Vor%Was ich gerne tun würde:
%Vor%BEARBEITEN: Ich habe vergessen zu erwähnen, dass der Controller einen Rückgabewert hat. Daher kann Action nicht verwendet werden.
Verwenden Sie Action<string>
, um eine Methode zu übergeben, die einen einzelnen String-Parameter akzeptiert. Rufen Sie diese Aktion mit Ihren Testparametern auf:
Verwendung:
%Vor%UPDATE:
Verwenden Sie Func<string, ActionResult>
für Controller, die ActionResult zurückgeben. Sie können auch eine generische Methode für diesen Zweck erstellen.
Wie in der Bearbeitung erwähnt, hat der Controller einen Rückgabetyp. Daher musste ich von Action zu Func wechseln, und da ich es in einem Komponententest verwendete, musste ich ein temporäres Objekt erstellen, das die Funktion enthält.
Basierend auf lazyberezovsky's Antwort hier ist mein resultierender Code:
%Vor%Der Komponententest ist dann:
%Vor%Tags und Links c# unit-testing nunit delegates