2013-06-14 13 views
8

Esiste un modo per eseguire un test dell'unità javascript per caricare un file utilizzando l'API del file HTML 5? Per esempio io ho il codice:Test unitario del caricamento di file HTML5

<form method="POST" enctype="multipart/form-data"> 
    <input type="file" id="fileselect" name="fileselect[]" multiple="multiple"/> 
</form> 

<script type="text/javascript"> 
    function fileSelectHandler(e) { 
     var files = e.target.files || e.dataTransfer.files; 
     // at this point, files is a FileList object 
    } 

    var fileselect = document.getElementById("fileselect"); 
    fileselect.addEventListener("change", fileSelectHandler, false); 
</script> 

quindi voglio automatizzare questo con javascript, così posso unit test di esso. Quindi ho bisogno di sparare all'evento di cambiamento e passare in qualche modo i file. Alla fine, ogni file dovrebbe essere un oggetto File HTML 5, con un percorso personalizzato che voglio.

+2

Non è possibile impostare il valore di 'ingresso file' con JavaScript, per fare questo avresti bisogno di un estensione per il browser di qualche tipo. Tuttavia, perché stai provando a testare la funzionalità dell'input del browser, perché non avere un oggetto file come parte del test? – robertc

+0

Robert, il mio codice "complicato" inizia con la variabile file, che è una FileList. Come faccio a fare in modo che FileList sia una lista di oggetti File che puntano a file reali su hard disk? – StefanH

+0

Ho già detto che non è possibile, ma anche se fosse possibile, se il test per selezionare un file con l'elemento 'input' non è andato a buon fine, cosa proverebbe sulla vostra applicazione? Stai progettando di inviare patch C++ ai vari fornitori di browser? – robertc

risposta

0

Non sono sicuro se questo potrebbe essere d'aiuto ma come usare iMacros per Firefox? È possibile registrare una macro che esegue tutto ciò che si desidera e quindi eseguirla tutte le volte che si desidera. È davvero facile da usare e funziona per me per quasi tutti i miei test dell'interfaccia utente.

iMacros firefox plugin