测试 Laravel 包

Testing a Laravel package

所以,我正在编写一个基本的 Laravel 包,我似乎偶然发现了另一个问题,这次是测试。

开发中的包当前位于项目根目录的 packages 文件夹中。我已经修改了包的 composer.json 文件以包含我需要的依赖项

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

但是,每当我在包文件夹(其中包含一个名为 tests 的文件夹以及一个示例测试)中尝试 运行ning phpunit tests 时,我都会收到以下错误:

PHP 致命错误:在第 8

行的 /workspace/laravel/packages/sample/http-request/tests/HttpRequestTest.php 中找不到 Class 'Illuminate\Foundation\Testing\TestCase'

测试文件就是自动生成的存根:

<?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);
    }
}

知道为什么这不起作用吗?该应用程序测试 运行 顺利,但该应用程序本身没有依赖项,除了包装盒中的依赖项。

解决方案

设法通过扩展 PHPUnit_Framework_TestCase 使其独立工作:

class HttpRequestTest extends PHPUnit_Framework_TestCase 

但是,运行宁它喜欢:

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

同样有效,所以我选择它作为答案。

这对我有用:

class HttpRequestTest extends TestCase

和运行测试:

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

(代表 OP 作为答案发布).

设法通过扩展 PHPUnit_Framework_TestCase 使其独立工作:

class HttpRequestTest extends PHPUnit_Framework_TestCase 

然而,运行它喜欢:

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

同样有效,所以我选择它作为答案。

对于 Windows 环境,您需要使用反斜杠!

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

  • 在包的根目录中创建一个名为 tests 的目录,并在其中编写各种测试 classes。您可以在单个 class 中的各种方法中使用您的包的所有功能,或者您可以使用多个 classes.

  • 移至项目的根目录并运行执行以下命令,

    vendor/bin/phpunit packages/YOUR_DIRECTORY_NAME/PACKAGE_NAME

  • 稍等一下,您将收到测试用例的响应。将显示正面和负面测试的数量。