Pergunta

Qual é a melhor maneira de entradas $_GET teste e $_POST em PHPUnit?

Eu tenho uma classe que a entrada higieniza e quiser verificar que ele funciona corretamente quando o processamento de dados falsos. Existe uma maneira fácil de configurar as variáveis ??de formulário em PHPUnit ou devo apenas passar a validação a uma classe secundária / funções que são alimentados as variáveis ??de formulário para testá-los indiretamente?

Foi útil?

Solução

Dê uma olhada na idéia de Injeção de dependência . Em poucas palavras você deve alimentar o seu código o que ele precisa em oposição a ele obter os dados de que necessita ... Aqui está um exemplo:

exemplo, sem Dependency Injection

function sanitize1() {
  foreach($_POST as $k => $v) {
    // code to sanitize $v
  }
}

sanitize1();

exemplo, com Dependency Injection

function sanitize2(array &$formData) {
  foreach($formData as $k => $v) {
    // code to sanitize $v
  }
}

sanitize2($_POST);

Veja a diferença? Em seu teste PHPUnit você pode passar sanitize2() uma matriz associativa de sua escolha; Você injetou a dependência. Considerando sanitize1() é acoplado com $_POST. $_POST e $_GET são matrizes assoc de qualquer maneira assim em seu código de produção você pode passar $_GET ou $_POST à sua função, mas em seus testes de unidade você iria codificar alguns dados esperados.

exemplo de teste Unidade:

function testSanitize() {
  $fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
  sanitize($fakeFormData);
  // assert something
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top