O projeto do Asset compute define um padrão para fácil criação e execução testes de trabalhadores Assets compute.
Os testes dos trabalhadores assets compute são divididos em conjuntos de testes e, em cada conjunto de testes, um ou mais casos de teste afirmam uma condição a ser testada.
A estrutura dos testes em um projeto do Asset compute é a seguinte:
/actions/<worker-name>/index.js
...
/test/
asset-compute/
<worker-name>/ <--- Test suite for the worker, must match the yaml key for this worker in manifest.yml
<test-case-1>/ <--- Specific test case
file.jpg <--- Input file (ie. `source.path` or `source.url`)
params.json <--- Parameters (ie. `rendition.instructions`)
rendition.png <--- Expected output file (ie. `rendition.path`)
<test-case-2>/ <--- Another specific test case for this worker
...
Cada conversão de teste pode ter os seguintes arquivos:
file.<extension>
.link
)rendition.<extension>
params.json
validate
diff
comandomock-<host-name>.json
Este caso de teste declara a entrada parametrizada (params.json
) para o arquivo de entrada (file.jpg
) gera a representação PNG esperada (rendition.png
).
Primeiro exclua os relatórios gerados automaticamente simple-worker
testa o caso em /test/asset-compute/simple-worker
como isso é inválido, já que nosso trabalhador não copia mais simplesmente a origem para a representação.
Criar uma nova pasta de casos de teste em /test/asset-compute/worker/success-parameterized
para testar uma execução bem-sucedida do worker que gera uma representação PNG.
No success-parameterized
pasta, adicione o teste arquivo de entrada para este caso de teste e nomeie-o file.jpg
.
No success-parameterized
, adicione um novo arquivo chamado params.json
que define os parâmetros de entrada do trabalhador:
{
"size": "400",
"contrast": "0.25",
"brightness": "-0.50"
}
Esses são os mesmos valores/chaves passados para o Definição do perfil de Asset compute da ferramenta de desenvolvimento, menos o worker
chave.
Adicione o esperado arquivo de representação para este caso de teste e nomeie-o rendition.png
. Este arquivo representa a saída esperada do trabalhador para a entrada especificada file.jpg
.
Na linha de comando, execute os testes na raiz do projeto executando aio app test
Esse caso de teste testa para garantir que o trabalhador acione o erro apropriado quando o contrast
O parâmetro está definido com um valor inválido.
Criar uma nova pasta de casos de teste em /test/asset-compute/worker/error-contrast
para testar uma execução incorreta do trabalhador devido a uma falha contrast
valor do parâmetro.
No error-contrast
pasta, adicione o teste arquivo de entrada para este caso de teste e nomeie-o file.jpg
. O conteúdo deste arquivo é irrelevante para este teste, ele só precisa existir para passar pela verificação "Fonte corrompida", a fim de alcançar o rendition.instructions
verificações de validade, que este caso de teste valida.
No error-contrast
, adicione um novo arquivo chamado params.json
que define os parâmetros de entrada do trabalhador com o conteúdo:
{
"contrast": "10",
"errorReason": "rendition_instructions_error"
}
contrast
parâmetros para 10
, um valor inválido, pois o contraste deve estar entre -1 e 1, para gerar um RenditionInstructionsError
.errorReason
chave para o "motivo" associado ao erro esperado. Este parâmetro de contraste inválido lança o erro personalizado, RenditionInstructionsError
, por conseguinte, defina a errorReason
ao motivo deste erro, ourendition_instructions_error
para afirmar que foi lançado.Como nenhuma representação deve ser gerada durante uma execução com erro, nenhuma rendition.<extension>
arquivo é necessário.
Execute o conjunto de testes na raiz do projeto executando o comando aio app test
Os casos de teste finais estão disponíveis no Github em: