Thursday 25 May 2017

Waitforexpectationswithtimeout


Estou testando uma chamada assíncrona usando XCTestExpectation. O código a seguir funciona (o teste é bem-sucedido) quando o CompleteHandler é executado antes do tempo limite de 1 segundo dado. No entanto, se o preenchimento do Handler não for chamado e, portanto, a expectativa não cumprida, em vez de obter uma falha de teste ao chamar waitForExpectationsWithTimeout, recebo um EXCBADACCESS, o que não é muito útil, pois isso impossibilita a exibição de todos os resultados do teste de teste. Como posso evitar isso e obter uma falha de teste normal solicitada em 21 de dezembro às 15: 31 Eu tive o mesmo problema. A correção para mim pareceu aumentar o intervalo de tempo limite. Eu originalmente tive um intervalo de tempo limite de 1 e aumentou para 5 apenas para estar no lado seguro. Parece estar funcionando bem agora. Não tenho certeza de quanto tempo leva sua chamada assíncrona, ou se você pode pagar um intervalo de tempo limite maior do que 1, mas vale a pena disparar. Respondeu 24 de novembro às 20:14 tentei isso, em 50 casos ajudou. Você pode ver no código que postei que async é apenas dispatchafter que espera 0.5s. No final, estou nilhando a expectativa após o bloqueio de espera e fazendo tudo afirmando também após o bloco de espera. Então, nada acontece enquanto aguarda, mas cumpre. Ndash Micha Hernas 25 de novembro 14 às 11:18 Swift tem um problema especial para mostrar o ponto de quebra de exceção correto quando os fechamentos estão presentes no mesmo escopo. Eu vi o mesmo problema em um XCTestCase que usou dispatchafter e mesmo através do ponto de interrupção de exceção foi a mesma linha que waitForExpectationsWithTimeout, o caso de teste estava falhando devido a um downcast em um objeto nulo. Eu sei que este não é o seu caso, mas sempre que isso acontece, sugiro remover instruções uma linha por vez e executar o teste após cada remoção. Se o teste não falhar, você identificou o culpado. Desafortunadamente, esta é a melhor opção no momento da escrita quando Swift mostra um ponto de interrupção de exceção em uma linha que não faz sentido, especialmente a infame linha 0 de uma classe que você pode ver em ferramentas de relatório de falhas. Deixe-nos saber se você descobriu seu acidente.

No comments:

Post a Comment