Domanda

OK - Adoro Nancyfx. Scrivere un'applicazione Web con quelle poche righe è semplicemente fantastico!

Ma come testare i tuoi nancymoduli a livello di unità?

Si prega di notare che sono a conoscenza del Ottimo testframework Fornito con Nancy (Nancy.testing su Nuget), che offre modi eccellenti per testare l'intero stack di applicazione (quasi). Ma ora intendo il unità Test di livello che uso per arricchire il contenuto del mio Nancymodule, in modo TDD.

Poiché i percorsi sono definiti nel costruttore, spesso insieme a un'espressione Lamda che costituisce l'intera azione, sembra un po '"irraggiungibile" da un test unitario. Ma mi sono perso qualcosa di ovvio su come testare le azioni del percorso?

Ad esempio, come sembrerebbe unità unità per questa semplice applicazione?

public class ResouceModule : NancyModule 
{
   private IProductRepository _productRepo;

   public ResourceModule(IProductRepository repo) : base("/products") 
   {
        Get["/list"] = parameters => { 
           return View["productList.cshtml", repo.GetAllProducts()];
        };
   }
}

Vedi lì - ora ho scritto il codice di produzione prima del test ... :) Qualche suggerimento su come iniziare con il test?

È stato utile?

Soluzione

È possibile eseguire il test prima dev con gli strumenti di test che forniamo:

  • Nel tuo test startup configura un bootstrapper che contiene solo il modulo che hai in test e tutti gli oggetti falsi che desideri.
  • Nel tuo test eseguire un percorso specifico (come GET /Elenco) - Potresti voler un piccolo aiutante per rimuovere forse un codice ripetuto.
  • Affermare ciò che ritorna: hai pieno accesso ai oggetti di richiesta e risposta (per intestazioni, cookie ecc.), Insieme agli aiutanti per i corpi HTML e, arrivando in 1.8, aiutano a consegnare JSON, XML e solo risposte a stringa nel corpo.
  • Passa al percorso successivo, sciacquare e ripetere.

Ok, quindi non lo sei Appena Testare il modulo, ma se guardi lo stack di chiamata, non c'è molto da fare prima o dopo aver raggiunto il percorso, quindi non è un grosso problema nel mio libro :-) Se vuoi davvero testare il modulo in completa Isolamento quindi puoi semplicemente costruirlo da solo e colpire le singole rotte di conseguenza (sono solo dizionari nel modulo).

Altri suggerimenti

Come parte di Nancy.testing è possibile utilizzare BootsRapper configurabile per controllare l'installazione, inclusa l'installazione IOC. Ciò dovrebbe consentire il test del modulo senza dipendenze di livello inferiore e abilitare TDD.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top