O que é o Respect
Agora é hora de muito respeito, vamos falar da melhor e mais impressionante ferramenta de validação já feita, então, Respect por favor!
O Respect já é um projeto muito maduro e conhecido, e está nos principais veículos de mídias especializadas do brasil e do exterior como no SitePoint, PHPArch, Zurb, iMasters entre muitos outros.
RespectValidation – #testfest2015
Recentemente, o phpsp promoveu o #testfest no Centro de Treinamentos Novatec, onde pudemos criar teste para o microframework RespectValidation.
Estavam no evento caras de alto gabarito e nível técnico, entre eles o criador e arquiteto chefe do projeto @alganet, o @henriquemoody, engenheiro core commiter do projeto entre outros membros do phpsp.
Lá tivemos a oportunidade de aprender diretamente com os responsáveis do projeto, como programar com o respect utilizando as boas praticas e como contribuir para o mesmo.
Quais os pré-requisitos ?
Primeiramente é muito bom já ter uma certa familiaridade com o framework, se não tiver não tem problema, o @henriquemoody produziu um excelente documento onde explica passo a passo como funciona o framework, do nível básico ao ninja.
Vamos codar? – Teste Unitário
Vamos escrever testes usando esta classe de exemplo “IntType”, onde verifica se o que está sendo passado é um inteiro.
<?php /* IntType.php */ namespace RespectValidationRules; class IntType extends AbstractRule { public function validate($input) { return is_int($input); } }
Dentro do projeto validation, temos o diretório testes/unit/Rules/, é aqui que criaremos um teste unitário para testar a classe acima chamado de IntTypeTest.php
Neste teste, podemos estender de phpunit as funcionalidades que iremos utilizar a seguir.
Como precisaremos verificar se um determinado dado é um inteiro válido, precisaremos de uma fonte de dados, para ver se a validação realmente funciona.
Para isto o phpunit nos oferece o @dataProvider, onde podemos implementar dados para teste da função.
<?php /* IntTypeTest.php */ namespace RespectValidationRules; /** * @group rule * @covers RespectValidationRulesIntType */ class IntTypeTest extends PHPUnit_framework_TestCase { public function providerForValidIntType() { return array( array(0), array(123456), array(PHP_INT_MAX), array(PHP_INT_MAX * -1) ); } /** * @dataProvider providerForValidIntType */ public function testShoudValidateInputWhenItIsAValidIntType($input) { $rule = new IntType(); $this->assertTrue($rule->validate($input)); } }
Vamos codar? – Teste Integração
Depois de escrever teste unitário, devemos escrever um teste de integração.
/* IntType.phpt */ --TEST-- Validator::IntType() --CREDITS-- marcosptf - --SKIPIF-- <?php if(!is_file(__DIR__ . DIRECTORY_SEPARATOR . 'vendor/autoload.php')) die('skip, please install composer.'); ?> --FILE-- <?php var_dump(Validator::IntType()->assert(42)); var_dump(Validator::IntType()->check(42)); ?> --EXPECT-- bool(true) bool(true)
A idéia deste post não é esgotar o assunto, mais propositalmente, deixar um desejo de “quero mais”, se este for o seu caso e quiser se aprofundar no assunto e começar a contribuir, veja alguns itens mais avançados na apresentação realizada no dia do evento.
Powered by WPeMatico