No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Continuando nuestro proyecto

16/19
Recursos

Aportes 21

Preguntas 9

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

En esta clase se mencion贸 algo muy importante, y es el tipo de dato que se espera, cuando trabajamos con par谩metros en las funciones es posible especificar qu茅 tipo de dato estamos esperando, esto hace que sea un c贸digo mejor estructurado y te acerca m谩s a las buenas pr谩cticas, de igual manera, los m茅todos de las clases pueden especificar qu茅 tipo de dato se va a retornar, as铆 le confirmamos 100% a quien use nuestra clase que vamos a retornarle si o si tal tipo de dato, por ejemplo, en esta clase:

<?php

namespace App;

class Comment {

    public $like_count = 0;

    public function like(User $usuario) : int {
        return $this->like_count;
    }
    
}


?>

Vemos que hay un m茅todo que espera como par谩metro 鈥淯ser $usuario鈥, esto quiere decir que, el par谩metro $usuario tiene que ser si o si una instancia de la clase Usuario, si yo reemplazara 鈥淯ser鈥 por 鈥渟tring鈥 le estar铆an diciendo que espero que el par谩metro $usuario sea una cadena de texto.

De igual manera, es funci贸n tiene al final " : int" esto est谩 diciendo que el m茅todo va a devolver si o si un entero, de esta manera podemos hacer un c贸digo m谩s robusto y a prueba de errores.

Si te te sale un error: Error: Class 鈥楢pp\Post鈥 not found a pesar de haber creado la clase y el namespace, ejecuta composer dump-autoload, esto hara que la clase que sea reconocida por el autoload y no mostrara el previo error.

Hola, en mi caso al configurar phpunit en composer utiliz贸 la versi贸n 10.0 y para realizar los test no funcionan con el comando:

vendor/phpunit/phpunit/phpunit

Revisando la documentaci贸n se debe usar:

vendor/bin/phpunit

y con ello pude seguir la clase.

Cuando ya se tiene mas practica y mas conocimiento en el desarrollo de software, siempre te vas a ir por escribir codigo primero y luego los tests, con esto quiero decir que, aunque en la teoria sea lo contrario, esta es la realidad

馃敭 Quieres optimizar tu tiempo de desarrollo y garantizar la calidad del c贸digo entonces es momento de utilizar TDD.

Hola me genera este error:

There was 1 error:

1) PostTest::test_add_comment_to_post
Error: Class 'App\Post' not found

C:\xampp\htdocs\Data\PHP\CursoPlatzi\POO\Proyecto\tests\PostTest.php:10

La linea 10 hace referencia a $post = new Post();

use PHPUnit\Framework\TestCase;
use App\Post;
use App\Comment;

class PostTest extends TestCase {
  
  public function test_add_comment_to_post(){
    $post = new Post(); //Se crea un post aqui es el error
    $comment = new Comment(); //Se crea un comentario

    $post->addComment($comment); //Ese comentario se agrega al post

    $this->assertEquals(1, $post->countComments()); //
    $this->assertInstanceOf(Comment::class, $post->getComments()[0]); //Si esta instanciado, correcto
  }
}

驴Alguien m谩s tuvo este error?

Hola!, queria saber si alguien me podr铆a ayudar porque a mi simplemente no se me ejecutan las pruebas.

Post.php

<?php

    namespace App;

    class Post{ // Resuelve el error de la l铆nea 11

        protected $comments = [];

        public function addComment(Comment $comment){ // Resuelve el error de la l铆nea 13
            $this->comments[] = $comment;
        }

        public function countComments(){ // Resuelve el error de la l铆nea 16
            return count($this->comments);
        }

        public function getComments(){ // Resuelve el error de la l铆nea 17
            return $this->comments;
        }
    }



?>

tengo este error. ayuda.

Para correr test de manera simple hay una extensi贸n para VSC llamada PHPUnit - Run PHPUnit tests from VSCode.

Hasta ahora ha sido la mejor explicaci贸n de TDD para PHP. Muchas gracias profe!

Realice un test para contar el n煤mero de likes que tiene un comentario

CommentTest.php

<?php

use PHPUnit\Framework\TestCase;

use App\Comment;
use App\User;

class CommentTest extends TestCase
{
    public function testCountLikesToComment()
    {
        $comment = new Comment();

        $user = new User();
        $comment->addLike($user);

        $this->assertEquals(1, $comment->countLikes());
        $this->assertIsInt($comment->countLikes());

    }
}

Estado Inicial del test

Comment.php

<?php

namespace App;

class Comment {

    protected $like = 0;

    public function addLike(User $user)
    {
        $this->like++;
    }

    public function countLikes()
    {
        return $this->like;
    }

}

Resultado

Hay que mencionar que debemos crear la clase User para que funcione

En tiempo real te ayudan much铆simo las extensiones PHP Intellephanse y ErrorLens para VSCode!

Si no te muestra el test

$ vendor/phpunit/phpunit/phpunit

Tendr谩s que ejecutarlo directo al folder/file, esto sucede con la 煤ltima versi贸n de composer y phpunit:

$ vendor/phpunit/phpunit/phpunit --colors=always tests

$ vendor/phpunit/phpunit/phpunit --colors=always tests/PostTest.php
<?php

use PHPUnit\Framework\TestCase;
use APP\{Post, Comment};

class PostTest extends TestCase
{
    public function testAddCommentToPost(){
        $post = new \Post();
        $comment = new \Comment();
        $post->testAddComment($comment);

        $this->assertEquals(1,$post->countComments());
        $this->assertInstanceOf(Comment::class, $post->getComments()[0]);
    }
}

Test Driven Development (TDD) es una metodolog铆a de ingenier铆a de software que asegura software de mayor calidad y en menos tiempo.

Excelente clase, sobre TDD usando PHPUnit.

PHP Unit literalmente me har谩 un mejor programador porque me advierte cuando olvido los 鈥;鈥 o 鈥榌]鈥 馃槀

InstanceOf

this Is amazing! :)