Estou começando a usar o PHPUnit.
Tenho uma static function para valida o numero do CPF retornando true ou false se o CPF for válido ou inválido, respectivamente.
Usei essa static funcion para fazer os testes com o PHPUnit.
O código abaixo está funcionando corretamente, mas gostaria de saber se ele está com muitos ou poucos testes, se os testes estão bem elaborados, o que pode ser melhorado, melhores práticas para a criação destes testes...
Enfim...
Quem puder opinar, agradeço muito!
Não coloquei a static function que valida o cpf, para deixar o foco somente no código dos testes...
Obrigado.
<?php
use PHPUnit\Framework\TestCase;
use Validators\Documents as Cpf;
const VALID_CPF_WITH_ONLY_DIGITS = '70996162003';
const VALID_CPF_WITH_FORMATTED_DIGITS = '709.961.620-03';
const INVALID_CPF_WITH_ONLY_DIGITS = '70996162002';
const INVALID_CPF_WITH_FORMATTED_DIGITS = '709.961.620-02';
const INVALID_CPF_WITH_ALL_DIGITS_EQUALS = '11111111111';
const INVALID_CPF_WITH_LESS_THAN_ELEVEN_DIGITS = '7099616200';
const INVALID_CPF_WITH_MORE_THAN_ELEVE_DIGITS = '709961620030';
final class ValidatorCpfTest extends TestCase
{
public function testIsValidCpfWithOnlyDigits()
{
$this->assertTrue(Cpf\ValidatorCpf::checkOver(VALID_CPF_WITH_ONLY_DIGITS));
}
public function testIsValidCpfWithFormattedDigits()
{
$this->assertTrue(Cpf\ValidatorCpf::checkOver(VALID_CPF_WITH_FORMATTED_DIGITS));
}
public function testIsNotValidCpfWithOnlyDigits()
{
$this->assertFalse(Cpf\ValidatorCpf::checkOver(INVALID_CPF_WITH_ONLY_DIGITS));
}
public function testIsNotValidCpfWithFormattedDigits()
{
$this->assertFalse(Cpf\ValidatorCpf::checkOver(INVALID_CPF_WITH_FORMATTED_DIGITS));
}
public function testInvalidCpfWithAllDigitsEquals()
{
$this->assertFalse(Cpf\ValidatorCpf::checkOver(INVALID_CPF_WITH_ALL_DIGITS_EQUALS));
}
public function testInvalidCpfWithLessThanElevenDigits()
{
$this->assertFalse(Cpf\ValidatorCpf::checkOver(INVALID_CPF_WITH_LESS_THAN_ELEVEN_DIGITS));
}
public function testInvalidCpfWithMoreThanEleveDigits()
{
$this->assertFalse(Cpf\ValidatorCpf::checkOver(INVALID_CPF_WITH_MORE_THAN_ELEVE_DIGITS));
}
}
Olá Pessoal,
Sou novo por aqui e me perdoem se cometer algum equivoco,
Estou querendo usar "Selenium" em php para pegar dados de um site, mas para isso preciso configurar algumas coisas no meu pc(windows), dentre elas instalar o PHPUnit, só que estou encontrando dificuldade para isso, já pesquisei em vários tutoriais, inclusive do proprio phpunit (https://phpunit.de/)%C2'> e não obtive exito,
Obs.: uso o xamp em meu PC.
Algum dos colegas teria algo que indicasse como faria a instalação do phpunit dentro do windows para me indicar.
Grato pela atenção
Estou há alguns dias tentando passar de um problema no PHPUnit, mas tá estranho.
Antes de tudo... sou novo no processo de TDD.
Estou tentando "mockar" um método de uma classe, e quero me certificar de que quando eu chame este método, ele chame um terceiro método.
Bom, segue código com comentários do que eu quero fazer mas não estou conseguindo...
Classe: Usuario
<?php
namespace Minha\Classe\Concreta;
class Usuario
{
/**
* Este é o método que eu tento mockar, para posteriormente, verificar se ele chama o método teste2.
*/
public function teste()
{
$this->teste2();
}
private function teste2()
{
}
}
O teste unitário para ela...
<?php
class UsuarioTest extends \PHPUnit_Framework_TestCase
{
public function testMockingMethods()
{
// Crio um mock da minha classe Usuário com o método teste.
$mock = $this->getMockBuilder('Minha\Classe\Concreta\Usuario')
->disableOriginalConstructor()
->setMethods(['teste'])
->getMock();
// Espero que o método teste2 seja chamado uma vez apenas.
$mock->expects($this->once())
->method('teste2');
// Chamo o método "teste" para rodar o teste de fato e certificar que "teste2" foi chamado.
$mock->teste();
}
}
Ao rodar esse teste, o resultado é o seguinte...
vagrant@vm:/www$ (master) ✖ ./library/vendor/bin/phpunit
PHPUnit 4.8.21 by Sebastian Bergmann and contributors.
Runtime: PHP 5.5.9-1ubuntu4.17 with Xdebug 2.2.3
Configuration: /www/teste/phpunit.xml
F
Time: 13.13 seconds, Memory: 14.25MB
There was 1 failure:
1) UsuarioTest::testMockingMethods
Expectation failed for method name is equal to <string:teste2> when invoked 1 time(s).
Method was expected to be called 1 times, actually called 0 times.
Pois bem, eu não sei o que está errado na minha classe de teste.
Já verifiquei várias vezes na própria documentação do PHPUnit mas não sei o que estou fazendo errado ainda.