6
votes

Mise en route avec "Améliorer PHP"

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 commentaires

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


3 Réponses :


3
votes

Ceci: xxx

devrait être: xxx

Votre simulte n'est jamais injecté à ce stade de votre test: xxx


4 commentaires

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 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/...



1
votes

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. XXX PRE>

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';
    }
}


0 commentaires

0
votes

Il y a un tutoriel sur Nettuttuts intitulé Testez votre PHP CodeBase avec Améliorer PHP , qui vous aidera certainement à vous lancer.

Et il y a un Guide de démarrage rapide sur Améliorer PHP .


0 commentaires