Pergunta

Qual seria a maneira correta de testar uma ação do controlador que executa um redirecionamento?

ATUALIZAÇÃO: Sou um desenvolvedor principal no projeto CFWHEELS. Toda a razão pela qual estou fazendo essa pergunta está atualmente, estou trabalhando para aprimorar a estrutura de teste incorporada que temos e estou me perguntando como abordar e implementar algo assim em cfwheels para facilitar para os desenvolvedores testar sua aplicação .

ATUALIZAÇÃO: Eu descobri como testar isso. Parece que teremos que reescrever um pouco os internos do controlador de rodas para executar o redirecionamento após a conclusão da ação e depois que ela for passada de volta ao despachante. A única coisa com essa abordagem é que qualquer código após o redirectTO () seria executado, exceto se você tomar as precauções apropriadas antes da mão; Isso inclui a devolução após a instrução redirectTo () ou colocar verificações condicionais em sua ação para isolar o código redirectTo () de outro código. Também envolve garantir que nada mais seja renderizado quando um redirectTo () é realizado.

Foi útil?

Solução

Coisas como essa se tornam muito mais fáceis de testar se você separar o mecanismo de redirecionamento em várias funções: a) uma função que determina o URL de destino e b) uma função que executa o redirecionamento.

Dessa forma, você pode testar a função com muita facilidade, e a functionA é a que você deseja testar de qualquer maneira. É o código vocês escreveu. É onde está sua verdadeira lógica. Functionb não é o seu código; São as tripas de fusão e não há muito sentido em testar a cflocation.

Se você estiver em alguma missão para obter uma cobertura de 100% de teste, poderá gastar 10 testes para função, onde exerce todos os diferentes ramos da sua lógica e, em seguida, um teste para functionb que exerce o redirecionamento da maneira que Terry sugere; Então, dessa maneira, você só recebe 1 teste lento em vez de 10.

Você pode generalizar essa abordagem para usos em outros cenários: sistemas de arquivos, serviços de web, http, ftp, email, etc: "Extrair as coisas que você pode controlar e deseja testar das coisas que não pode controlar e não deseja testar "

Outras dicas

Você pode ligar para o controlador com o URL apropriado usando CFHTTP com redirecionamento definido como false. Em seguida, teste a estrutura do resultado do CFHTTP resultante, ele deve ter informações sobre onde o redirecionamento o levaria.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top