Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Testing a Laravel package

So, I'm writing a basic Laravel package and I seem to have stumbled upon yet another problem, this time with testing.

The package in development is currently in a packages folder in the root of the project. I have modified the composer.json file of the package to include the dependencies I need

"require-dev": {
    "phpunit/phpunit": "~4.0",
    "laravel/laravel": "dev-develop"
}

However , whenever I try running phpunit tests in the package folder (which contains a folder named tests along with a sample test), I get the following error:

PHP Fatal error: Class 'Illuminate\Foundation\Testing\TestCase' not found in /workspace/laravel/packages/sample/http-request/tests/HttpRequestTest.php on line 8

The test file is just the auto-generated stub:

<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class HttpRequestTest extends Illuminate\Foundation\Testing\TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testExample()
    {
        $this->assertTrue(true);
    }
}

Any idea why this isn't working? The app tests run without a hitch, but the app itself doesn't have dependencies other than what's in the box.

SOLUTION

Managed to make it work independently by extending the PHPUnit_Framework_TestCase:

class HttpRequestTest extends PHPUnit_Framework_TestCase 

However , running it like:

vendor/bin/phpunit packages/yourname/package-name/

Works as well, so I picked it as an answer.

like image 234
overburn Avatar asked May 05 '16 07:05

overburn


1 Answers

This works for me:

class HttpRequestTest extends TestCase

And running test with:

vendor/bin/phpunit packages/yourname/package-name/
like image 132
Alexey Mezenin Avatar answered Nov 10 '22 01:11

Alexey Mezenin