Installa Docker Desktop sul computer. Per testare un processo di lavoro personalizzato, eseguire il comando seguente nella directory principale dell'applicazione:
$ aio app test
Viene eseguito un framework di test di unità personalizzata per Asset compute le azioni dell’applicazione nel progetto come descritto di seguito. Viene collegato tramite una configurazione nel file package.json
. È anche possibile avere unit test JavaScript come Jest. aio app test
esegue entrambe.
Il plug-in aio-cli-plugin-asset-compute è incorporato come dipendenza di sviluppo nell'app dell'applicazione personalizzata in modo che non sia necessario installarlo nei sistemi di build/test.
Il framework di test dell'unità applicativa di Asset compute consente di testare le applicazioni senza scrivere alcun codice. Si basa sul principio di origine del file di rendering delle applicazioni. È necessario impostare una determinata struttura di file e cartelle per definire i casi di test con i file di origine dei test, i parametri facoltativi, le rappresentazioni previste e gli script di convalida personalizzati. Per impostazione predefinita, le rappresentazioni vengono confrontate per l’uguaglianza dei byte. Inoltre, i servizi HTTP esterni possono essere facilmente mascherati utilizzando semplici file JSON.
Sono previsti test all'interno della cartella test
al livello principale del progetto Adobe I/O. I casi di prova per ciascuna applicazione devono trovarsi nel percorso test/asset-compute/<worker-name>
, con una cartella per ogni test case:
action/
manifest.yml
package.json
...
test/
asset-compute/
<worker-name>/
<testcase1>/
file.jpg
params.json
rendition.png
<testcase2>/
file.jpg
params.json
rendition.gif
validate
<testcase3>/
file.jpg
params.json
rendition.png
mock-adobe.com.json
mock-console.adobe.io.json
Per alcuni esempi, consulta l’ esempio applicazioni personalizzate . Di seguito è riportato un riferimento dettagliato.
L’output dettagliato del test, compresi i registri dell’applicazione personalizzata, è disponibile nella cartella build
nella directory principale dell’app Firefly, come illustrato nell’ aio app test
output.
È possibile simulare le chiamate al servizio esterno nelle azioni definendo i file mock-<HOST_NAME>.json
nei casi di test, dove HOST_NAME è l'host di cui si desidera tenere traccia. Un esempio di caso d'uso è un'applicazione che effettua una chiamata separata a S3. La nuova struttura del test sarà simile alla seguente:
test/
asset-compute/
<worker-name>/
<testcase3>/
file.jpg
params.json
rendition.png
mock-<HOST_NAME1>.json
mock-<HOST_NAME2>.json
Il file fittizio è una risposta http in formato JSON. Per ulteriori informazioni, consulta questa documentazione. Se ci sono più nomi host da simulare, definisci più file mock-<mocked-host>.json
. Di seguito è riportato un esempio di file di simulazione per google.com
denominato mock-google.com.json
:
[{
"httpRequest": {
"path": "/images/hello.txt"
"method": "GET"
},
"httpResponse": {
"statusCode": 200,
"body": {
"message": "hello world!"
}
}
}]
L'esempio worker-animal-pictures
contiene un file di tag per il servizio Wikimedia con cui interagisce.
Si consiglia di utilizzare i collegamenti simbolici relativi se si condividono script file.*
, params.json
o validate
in più test. Sono supportati con Git. Assicurati di assegnare ai file condivisi un nome univoco, in quanto potrebbero essere presenti file diversi. Nell'esempio seguente i test stanno combinando e confrontando alcuni file condivisi e i loro:
tests/
file-one.jpg
params-resize.json
params-crop.json
validate-image-compare
jpg-png-resize/
file.jpg - symlink: ../file-one.jpg
params.json - symlink: ../params-resize.json
rendition.png
validate - symlink: ../validate-image-compare
jpg2-png-crop/
file.jpg
params.json - symlink: ../params-crop.json
rendition.gif
validate - symlink: ../validate-image-compare
jpg-gif-crop/
file.jpg - symlink: ../file-one.jpg
params.json - symlink: ../params-crop.json
rendition.gif
validate
I casi di test di errore non devono contenere un file rendition.*
previsto e devono definire il errorReason
previsto all'interno del file params.json
.
Se un test case non contiene un file previsto rendition.*
e non definisce il errorReason
previsto all'interno del file params.json
, si presume che si tratti di un errore con qualsiasi errorReason
.
Struttura del caso di test di errore:
<error_test_case>/
file.jpg
params.json
File di parametro con motivo di errore:
{
"errorReason": "SourceUnsupported",
// ... other params
}
Vedi l'elenco completo e la descrizione di Asset compute di motivi di errore.
I passaggi seguenti mostrano come eseguire il debug dell'applicazione personalizzata utilizzando Visual Studio Code. Consente di visualizzare log in tempo reale, punti di interruzione e codice dettagliato, nonché di ricaricare in tempo reale le modifiche al codice locale a ogni attivazione.
Molti di questi passaggi sono generalmente automatizzati da aio
out of the box, vedi la sezione Debug dell'applicazione nella documentazione Firefly. Per il momento, i passaggi seguenti includono una soluzione alternativa.
Installa l'ultimo wskdebug da GitHub e l'facoltativo ngrok.
npm install -g @openwhisk/wskdebug
npm install -g ngrok --unsafe-perm=true
Aggiungi al file JSON delle impostazioni utente. Continua a utilizzare il vecchio debugger del codice VS, il nuovo ha alcuni problemi con wskdebug: "debug.javascript.usePreview": false
.
Chiudi tutte le istanze delle app aperte tramite aio app run
.
Distribuisci il codice più recente utilizzando aio app deploy
.
Esegui solo lo strumento Devtool di Asset compute utilizzando aio asset-compute devtool
. Tenetela aperta.
In Editor di codice VS, aggiungi la seguente configurazione di debug al tuo launch.json
:
{
"type": "node",
"request": "launch",
"name": "wskdebug worker",
"runtimeExecutable": "wskdebug",
"args": [
"PROJECT-0.0.1/__secured_worker", // Replace this with your ACTION NAME
"${workspaceFolder}/actions/worker/index.js",
"-l",
"--ngrok"
],
"localRoot": "${workspaceFolder}",
"remoteRoot": "/code",
"outputCapture": "std",
"timeout": 30000
}
Recupera il ACTION NAME
dall'output di aio app deploy
.
Seleziona wskdebug worker
dalla configurazione di esecuzione/debug e premi l'icona di riproduzione. Attendi che inizi finché non viene visualizzato Pronto per le attivazioni nella finestra Console di debug.
Fare clic su esegui nel Devtool. Puoi vedere le azioni in esecuzione nell’editor di codice VS e i registri iniziano a essere visualizzati.
Imposta un punto di interruzione nel codice, esegui di nuovo e dovrebbe colpire.
Tutte le modifiche al codice vengono caricate in tempo reale e hanno effetto non appena si verifica l’attivazione successiva.
Sono presenti due attivazioni per ogni richiesta nelle applicazioni personalizzate. La prima richiesta è un’azione web che si chiama in modo asincrono nel codice SDK. La seconda attivazione è quella che colpisce il codice.