Cosa c'è di nuovo in Test YUI 3.0.0

10 dicembre, 2009 alle 9:07 pm da Nicholas C. Zakas | In Sviluppo | Commenti disabilitati

Nicholas C. Zakas è entrato in Yahoo! nel 2006. Egli è l'autore di professionale Ajax e JavaScript professionale per gli sviluppatori web . Il suo Test-Driven Development presentazione è uno dei tanti da Nicola YUI Theater .

Una nuova versione di YUI test accompagnato il rilascio di YUI 3.0.0 . Test di YUI 3.0.0 per più di una semplice porta del 2.x compatibile con la versione di YUI Test, tuttavia, l'introduzione di diverse nuove funzionalità. Questi sono nate a seguito delle richieste di sviluppo e le conversazioni che ho avuto con quelli già utilizzando lo strumento.

Promozione della simulazione dell'evento

Simulazione di evento è stato inizialmente introdotto nella versione 2.x di YUI test mediante l' YAHOO.util.UserAction oggetto. Come si è scoperto, gli sviluppatori è piaciuto molto questa funzionalità e usi trovati per esso al di fuori dell'ambiente di test. Di conseguenza, lo strumento di simulazione a eventi sono stati promossi a essere una prima classe membro della utility 3.0.0 Event YUI , accessibile in un unico metodo, Y.Event.simulate() . È possibile includere il componente di simulazione di eventi passando "event-simulate" nella YUI().use() metodo:

  YUI (). Utilizzare ("event-simulazione", function (Y) {
     Y.Event.simulate ("# nodo", "click",
                      {ClientX: 25, clientY: 30});
 }); 

Oggetti Mock

YUI test per YUI 3.0.0 introduce una nuova funzionalità: la creazione di oggetti simulati. Oggetti fittizi sono utili per isolare gli unit test da dipendenze. Nei sistemi software complessi, vi sono spesso qualsiasi numero di pezzi che si basano su un altro. Il problema diventa quindi isolando quale parte del sistema non quando qualcosa va storto.

Ad esempio, supponiamo di avere un metodo chiamato logToServer() , che è quello di creare uno XMLHttpRequest oggetto e inviare un messaggio al server. Se il test include l'oggetto effettivo XHR nel tentativo di verificare la funzionalità, si hanno due principali dipendenze: l'oggetto XHR stesso e il server. Se uno di questi due dipendenze falliscono, allora il test ha esito negativo anche se non è il tuo codice che è la colpa. Utilizzando un oggetto fittizio XHR, è possibile testare il codice in isolamento e garantire che funziona. Ad esempio:

  / / Crea un nuovo oggetto finta
 var = mockXhr Y.Mock (); 

 / / Mi aspetto che il metodo open () di essere chiamata con gli argomenti indicati
 Y.Mock.expect (mockXhr, {
     metodo: "aperto",
     args: ["? / log.php msg hi =" "get", vero]
 }); 

 / / Mi aspetto che il metodo send () di essere chiamata con gli argomenti indicati
 Y.Mock.expect (mockXhr, {
     metodo: "invia",
     args: [null]
 }); 

 / / Ora chiama la funzione
 logToServer ("hi", mockXhr); 

 / / Verificare le aspettative sono state soddisfatte
 Y.Mock.verify (mockXhr); 

Questo esempio crea un oggetto fittizio XHR che viene utilizzato al posto di un oggetto XHR regolare. Una volta che tutte le operazioni sono state completate, il codice di verifica che i metodi previsti che sono stati chiamati. Il test di simulazione YUI oggetto API è volutamente minimale di essere il più chiaro e utile possibile. Per ulteriori informazioni su oggetti mock nei test YUI, vedere la documentazione .

Nomi di test amichevoli

YUI test inizialmente utilizzato il xUnit stile di metodi di prova in cui il nome di ogni metodo di prova deve iniziare con test . Test di YUI 3.0.0 per compie un ulteriore passo avanti, che consente di specificare i nomi di test amichevoli in xUnit supplementari, i nomi in formato. Nomi semplici frasi sono più di ogni altra cosa, e l'unica limitazione è che il nome contenga almeno uno spazio e la parola "dovrebbe". Ad esempio:

  var = new testCase Y.Test.Case ({ 

     name: "Nome TestCase", 

     / / XUnit-style nome test
     testSomeFunction: function () {

     },

     / / Nome del test amichevole
     "Qualcosa dovrebbe accadere qui": function () {
         ...
     }
 }); 

Nomi test Friendly consentono di descrivere la funzionalità in prova in modo più leggibile. Scrivere una frase come "metodo deve restituire 4 quando viene passato 2 e 2", e dopo aver che compaiono nei risultati della prova, rende più facile interpretare i risultati dei test e che altro deve essere affrontato.

Qual è il prossimo?

YUI test continua ad evolversi e crescere come il feedback ricevuto dagli sviluppatori. Ci sono alcune funzionalità attualmente in lavorazione:

  • Altri formati del risultato del test, come JUnit XML e TAP.
  • Code coverage raccolta e reporting.
  • L'automazione di test con Selenium.

Se avete idee o commenti, ci piacerebbe sentire da voi al YUILibrary.com , dove è possibile presentare richieste di nuove funzionalità o iniziare una discussione nel forum . Con il vostro aiuto, Test YUI può continuare ad evolversi per soddisfare le esigenze del sempre mutevole comunità di sviluppo web.

Condividi ed estendere: Segnalibro con Del.icio.us | Digg it! | reddit!

Nessun commento ancora

Siamo spiacenti, il commento forma è chiusa in questo momento.

Ospitato da Yahoo!

Copyright © 2006-2012 Yahoo! Inc. Tutti i diritti riservati. Privacy Policy - Termini di servizio

Powered by WordPress su Yahoo! Web Hosting .