2010-01-05 3 views
9
public interface IMyServer 
    { 
     [OperationContract] 
     [DynamicResponseType] 
     [WebGet(UriTemplate = "info")] 
     string ServerInfo(); 
    } 

Wie schreibe ich einen NUnit-Test zu beweisen, dass die C# Interface-Methode das [DynamicResponseType] Attribut auf sie hat?Wie NUnit Test für ein Attribut Existenz Methode

+1

pro Kommentar aktualisiert –

Antwort

18

Etwas wie:

Assert.IsTrue(Attribute.IsDefined(
      typeof(IMyServer).GetMethod("ServerInfo"), 
      typeof(DynamicResponseTypeAttribute))); 

Sie auch etwas tun kann, Generika und Delegierten oder Ausdrücke (anstelle der Zeichenfolge „Serverinfo“) beteiligt, aber ich bin nicht sicher, ob es das wert ist.

Für [WebGet]:

WebGetAttribute attrib = (WebGetAttribute)Attribute.GetCustomAttribute(
    typeof(IMyServer).GetMethod("ServerInfo"), 
    typeof(WebGetAttribute)); 
Assert.IsNotNull(attrib); 
Assert.AreEqual("info", attrib.UriTemplate); 
+1

Perfect, danke. Noch ein Punkt ... gibt es eine Möglichkeit zu testen, dass die [WebGet (UriTemplate = "info")] Attribute UriTemplate auf "info" gesetzt ist? –

+1

Wird aktualisiert, um anzuzeigen ... –

+0

Ich verwendete andere Syntax, um das Gleiche zu tun. Diese Antwort ist ein wenig sauberer, also werde ich darauf wechseln. Danke fürs Schreiben! –

Verwandte Themen