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

Come si scrive un test NUnit per provare che il metodo di interfaccia C# ha l'attributo [DynamicResponseType] impostato su di esso?Come test NUnit per l'esistenza di un attributo del metodo

+1

aggiornato per commentare –

risposta

18

Qualcosa di simile:

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

Si potrebbe anche fare qualcosa che coinvolge farmaci generici e delegati o espressioni (al posto della stringa "ServerInfo"), ma non sono sicuro ne vale la pena.

Per [WebGet]:

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

Perfetto, grazie. Un altro elemento ... c'è un modo per testare che [WebGet (UriTemplate = "info")] attributi UriTemplate sia impostato su "info"? –

+1

Si aggiornerà per mostrare ... –

+0

Stavo usando una sintassi diversa per fare la stessa cosa. Questa risposta è un po 'più pulita, quindi ho intenzione di passare a quello. Grazie per la pubblicazione! –

Problemi correlati