Estou gostando muito do curso e como iremos refatorar muito o código, achei interessante implementar tests para ir validando se tudo ocorre dentro dos conformes e praticar o curso já estudado.
Criei esse teste da calculadora (na fase inicial, quando os cálculos são realizados ainda passando por string) e gostaria de saber se algo mais que possa ser refatorado nesse código:
<?php
namespace Alura\DesignPattern\Tests;
use Alura\DesignPattern\CalculadoraDeImpostos;
use Alura\DesignPattern\Orcamento;
use PHPUnit\Framework\TestCase;
class CalculadoraImpostoTest extends TestCase
{
/**
* @test
* @dataProvider calculadoraProvider
* */
public function calculadoraIssDeveCalcularCorretamente($orcamento, $criterio, $experado)
{
$calculadora = new CalculadoraDeImpostos();
$calculo = $calculadora->calcula($orcamento, $criterio);
self::assertEquals($experado, $calculo);
}
public function calculadoraProvider()
{
$orcamento = new Orcamento();
$orcamento->valor = 1200;
return [
'calculadoraIssDeveCalcularCorretamente' => ['orcamento' => $orcamento, 'criterio' => 'ISS', 'experado' => 72],
'calculadoraIcmsDeveCalcularCorretamente' => ['orcamento' => $orcamento, 'criterio' => 'ICMS', 'experado' => 120]
];
}
}