2015-03-18 16 views
17

Mi piacerebbe creare un test di accettazione di base in ember che carichi un file. Posso prendere in giro il server con Pretender, ma ho bisogno di sapere come riempire il campo input type="file" con un file dal mio filesystem. Quindi le domande sono fondamentalmente:Test di accettazione per il caricamento di file in ember cli

  1. Come compilare il campo del file di input con helper di test ember, posso utilizzare l'helper fillIn?
  2. Come aggiungere file di esempio in una cartella e ottenerli dal mio test di accettazione. È possibile ottenere il percorso corrente del mio progetto Ember dal test di accettazione per selezionare un file dal filesystem da caricare? In Rails usiamo per usare Rails.root per questo scopo.

risposta

6

ho risolto in modo diverso: io non aggiungo un file dal file sistema, ma creare manualmente un BLOB e utilizzare triggerHandler sull'elemento di input:

let inputElement = $('input[type=file]'); 

let blob = new Blob(['foo', 'bar'], {type: 'text/plain'}); 
blob.name = 'foobar.txt'; 
inputElement.triggerHandler({ 
    type: 'change', 
    target: { 
    files: { 
     0: blob, 
     length: 1, 
     item() { return blob; } 
    } 
    } 
}); 

Questo avvia il caricamento.

+0

Questo funziona perfettamente con html come '' '' '' – jrjohnson

0

Non è possibile utilizzare qualcosa di simile fillIn per impostare il campo file con un valore di file pronto caricare perchè il browser non si lascerà:

How to set a value to a file input in HTML?

Credo che l'unica possibile Il modo per farlo sarebbe usare xhr per scaricare un file che esiste su un server e poi usare xhr per caricarlo. Non riesco a pensare in alcun modo che sia possibile impostare a livello di codice il valore del campo di input del file senza introdurre il problema di sicurezza spiegato in questa domanda SO a cui mi sono collegato.

Ecco qualche parte per iniziare quando si lavora con il file demo che si desidera verificare caricati dopo averlo scaricato formare un url http: https://developer.mozilla.org/en-US/docs/Web/API/FileReader