Je cherche à incorporer un cadre de test dans un projet que je suis construit et rencontré Améliorer Php que j'aime que j'aime mais j'ai des difficultés à trouver des informations pertinentes en ligne depuis "Améliorer PHP" est une telle phrase couramment utilisée.
Quelqu'un a-t-il travaillé avec ce cadre qui pourrait être capable de me diriger vers certains Guide utile? Avez-vous travaillé avec un cadre de test unitaire que vous pensez est incroyablement meilleur? P>
Merci d'avance. P>
En réponse à gotzofter, c'est la classe à tester: p>
<?php
include_once('EnhanceTestFramework.php');
class ExampleClass
{
private $OtherClass;
function __construct($mock = null)
{
if ($mock == null)
$this->OtherClass = new OtherExampleClass();
else
$this->OtherClass = $mock;
}
public function doSomething()
{
return $this->OtherClass->getSomething(1, 'Arg2');
}
}
class OtherExampleClass
{
public function getSomething()
{
return "Something";
}
}
class ExampleClassTests extends \Enhance\TestFixture
{
public function setUp()
{
}
public function tearDown()
{
}
public function verifyWithAMock()
{
$mock = \Enhance\MockFactory::createMock('OtherExampleClass');
$mock->addExpectation(
\Enhance\Expect::method('getSomething')
->with(1, 'Arg2')
->returns('Something')
->times(1)
);
$target = new ExampleClass($mock);
$result = $target->doSomething();
\Enhance\Assert::areIdentical("Something", $result);
$mock->verifyExpectations();
}
}
\Enhance\Core::runTests();
3 Réponses :
Ceci: devrait être: p> Votre simulte n'est jamais injecté à ce stade de votre test: P>
J'ai édité le post original. Est-ce ce que vous vouliez dire par votre réponse?
Je ne ferais pas exactement un constructeur dans lequel vous avez une création d'objet par défaut. Il suffit de rester avec une injection de dépendance standard aussi, la méthode quelque chose code> a des paramètres dans votre test, mais il n'est pas implémenté.
C'est ce que j'ai essayé de comprendre. Quelle est l'injection de dépendance standard ..? Les exemples sur Améliorer le tutoriel de PHP ne montrent pas la totalité de la photo et le code ci-dessus est le seul moyen d'avoir pu faire fonctionner les tests.
@baiano - Cet article peut aider à l'injection de dépendance dans PHP: stevefenton.co.uk/content/blog/date/201112/blog/...
Une chose que je recommanderais, quel que soit le cadre de test que vous utilisez est-ce que vous utilisez de type indiquant la classe attendue ou l'interface. Je ne suis pas expert, mais je n'ai pas t Voir le problème en laissant chaque classe d'appel neuf em> si une instance n'est pas fournie pour une dépendance particulière. Vous pouvez également saisir bien sûr l'approche où vous utilisez des méthodes de réglage pour configurer les dépendances. P> <?php
class ExampleClass
{
private $ExampleDependencyClass;
public function addTwoNumbers($a, $b)
{
return $a + $b;
}
public function setExampleDependencyClass(
ExampleDependencyClass $ExampleDependecyClass
) {
$this->ExampleDependecyClass = $ExampleDependecyClass;
}
public function doSomething($someArg)
{
return 'Something';
}
}
Il y a un tutoriel sur Nettuttuts intitulé Testez votre PHP CodeBase avec Améliorer PHP , qui vous aidera certainement à vous lancer. P>
Et il y a un Guide de démarrage rapide sur Améliorer PHP a>. p>
améliorer-php.com contient un Guide de démarrage rapide et on dirait également qu'ils ont Documentation décente sur toutes les fonctionnalités principales . Qu'est-ce que vous cherchez exactement au-delà de cela?
PHPUnit est le cadre de test de l'unité DEFACTO. Tbh je n'ai jamais entendu parler d'améliorer (ne prenez pas cela est une pousse bon marché, juste être honnête).
@Colin - Peut-être que je ne comprends pas simplement la simulation d'utilisation. Suite aux instructions de ce guide, je ne reçois pas les résultats que j'attends. Je vais ajouter du code au post d'origine