Uma biblioteca que facilita muito o teste de unidade de código baseado em banco de dados em PHP. Simule a classe PDO nativa, defina os resultados da consulta e inspecione as instruções executadas.
"[No combate a incêndios, um] aparelho de mangueira usado para dividir uma linha em duas descargas. Freqüentemente, uma estrela fechada é usada para permitir e impedir o fluxo de água através das duas descargas separadas." - https://en.wikipedia.org/wiki/Glossary_of_firefighting_equipment#Wye
Wye está registrado no Packagist e pode ser instalado com o Composer. Execute o seguinte na linha de comando:
composer require --dev stratedge/wye
Depois que Wye for incluído em seu projeto, certifique-se de exigir o autoloader do Composer:
require_once ' vendor/autoload.php ' ;
use Stratedge Wye Wye ;
//In test setup
//-------------
//Reset the Wye to its clean state
Wye::reset()
//Create a Wye PDO object
$ pdo = Wye:: makePDO ();
//Inject PDO into database layer
Database:: setConnection ( $ pdo );
//In test
//-------
//Create a Result object
$ result = Wye:: makeResult ();
//Add a row or two to return
$ result -> addRow ([ ' type ' => ' Pumper ' , ' apparatus ' => ' Engine 1 ' ]);
//Attach Result to Wye to be served when a query is executed
$ result -> attach ();
//Run code to test
$ class_to_test -> doSomething ();
//Inspect execution
$ stmt = Wye:: getStatementAtIndex ( 0 );
$ this -> assertStringStartsWith ( ' SELECT ' , $ stmt -> getStatement ());
$ this ->assertCount( 2 , count ( $ stmt -> getBindings ());
$ this -> assertSame ( ' id ' , $ stmt -> getBindings ()-> first ()-> getParameter ());
$ this -> assertSame ( 1 , Wye:: getNumQueries ());
//and more!
ESPERE, TEM MAIS
Para uma visão muito mais aprofundada do uso do Wye, verifique a extensa documentação, especialmente a seção Uso Básico.
A documentação completa e atualizada está disponível no Wiki.
Alguns dos principais tópicos discutidos incluem: Introdução, Definição de Resultados, Inspeção de Informações de Execução e Inspeção de Ligações.
A lista de melhorias e implementações está disponível na página Todo & Roadmap do wiki.
Se você encontrar um problema em Wye e achar que pode corrigi-lo, faça-o por favor. Solicitações pull são aceitas com prazer. Se você não tiver tempo ou energia para corrigi-lo, registre o problema com o máximo de detalhes possível para que eu possa dar uma olhada.
Os problemas podem ser registrados no rastreador de problemas do Github.
Wye foi construído com base em uma ideia que vi implementada pela primeira vez por meu amigo/colega Josh.