This week I dove into automated testing with Protractor.Uma vez que construir um ramo falha muito ultimamente com timeouts e outras questões, vou tentar descobrir mais e corrigir isto.

What is automatic testing.

testes automatizados tornam a vida mais fácil uma vez que ele é configurado corretamente e útil :)testes automatizados usam software/ferramentas para testar o código rapidamente. Você configura os testículos e esses são executados através da ferramenta. Não é necessária nenhuma interacção humana para testar depois de ter escrito esses casos. Ele pode comparar, executar uma entrada de dados através dos testes.

os testes mais comuns e as suas diferenças.

os dois métodos de ensaio mais comuns em que me deparei até à data são os ensaios de unidades e os ensaios E2E.

O ensaio de unidade

o ensaio de unidade centra-se no ensaio de unidades únicas.Pense nisto como uma função ou uma pequena parte do Código.Você zombar (falso) de Serviços, rede e outros recursos e fazer todos os testes isolados.no Karma Angular e Jasmine framework são usados principalmente testes de unidade towrite.

E2E testing

With e2e testing you can go through the GUI like a user does.Carregar em botões, páginas, menu, porcaria. (not in production)
Most common use for E2E testing with Angular is Selenium web-driver with Protractor. assim, para testar o seu código, é útil usar testes unitários.Se você quiser testar a utilização funcional do seu site, então você deve tentar E2E.

por que testar?

o objetivo é encontrar problemas rapidamente.Para o teste E2E: também você não quer testar, clicando em telas para ver se o botão ifa ainda funciona ou uma página carrega por si mesmo.Isso seria um monte de trabalho e não é consistente se seria done por diferentes desenvolvedores.

configurar o transferidor.

como instalar o transferidor.

Para instalar o transferidor, você execute o seguinte a partir da linha de comando:
Você instalar o transferidor executando:

npm install -g protractor

em Seguida, instalar o webdriver manager para o selênio.

webdriver-manager update

webdriver-manager start

Construir um teste.

primeiro você precisa de dois arquivos para criar um teste, um arquivo spec e arquivo de configuração.
no ficheiro de configuração você configura a localização dos ficheiros spec. Ele também contém o navegador que você deseja usar para testar, o padrão é o Chrome.O selênio serveraddress está incluído para comunicar.E também o quadro está definido, isto é Jasmine.Então parece algo assim:

 // conf.jsexports.config = { framework: 'jasmine', seleniumAddress: 'http://localhost:4444/wd/hub', specs: }

para construir um teste você tem que determinar um caso. Constróis a mala no ficheiro spec. Primeiro você determina o que o teste deve do.In neste caso, verifique se a sua página de destino mostra a mensagem de boas-vindas.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message', () => { expect(page.containsElement('#welcome')).toBeTruthy() expect(page.getElementText('#welcome')).toEqual('Welcome') })})

primeiro descreva a página ou elemento que deseja testar, neste exemplo é a página de destino. Descreve é o nome da sintaxe testsuite e Jasmine.Contém o fluxo de ponta a ponta. Dentro desta estão os testículos “it”.
então você determina o que ‘ele’ precisa fazer. É uma função global da Jasmine. Você pode ter várias ” it ” testcases no fluxo.(describe)
Neste caso você verifica se a página de destino tinha recebido a mensagem de boas-vindas exibida e, portanto, está disponível como esperado. ( true, toBeThruthy) você também verifica se o texto é o mesmo que o texto na página de destino (toEqual (‘yourText’)

Async aguarda.

JavaScript é assíncrono, você não sabe que script vai executar primeiro. Os fluxos do transferidor são sincronizados, seus passos estão em uma ordem específica de execução. Clique aqui e depois no botão.os fluxos do transferidor são escritos com uma promessa. O transferidor pode lidar com a promessa com uma espera até que ela esteja completa.

a sintaxe de async wait é muito parecida com a sintaxe TypeScript.
a função assíncrona pode ser embrulhada com ‘async’ e’aguardar’.
aguardar é usado antes da linha que queremos esperar.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message',async () => { expect(await page.containsElement('#welcome')).toBeTruthy() expect(await page.getElementText('#welcome')).toEqual('Welcome') })})

qual foi o principal problema com as minhas compilações?

Os meus testes falharam muito com os tempos-limite. Usei o async à espera e ainda tinha alguns problemas. Como você pode ver, a sintaxe é quase a mesma com o TypeScript async/wait.

encontrei isto na protractortest.org local.

não se esqueça de desligar o control_ Flow, não pode usar uma mistura de async/Wait e o fluxo de controlo: o async/wait faz com que o fluxo de controlo se torne pouco fiável (ver a questão do github). Por isso, se você async/aguardar em qualquer parte de uma especificação, você deverá usar o SELENIUM_ INTROMISE_MANAGER: false

adicionei isto à configuração e depuguei a esquerda por cima dos erros.eu construo em algum tempo de espera / sono entre alguns testes e ele funciona bem.

Deixe uma resposta

O seu endereço de email não será publicado.