测试 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
稍等一下,您将收到测试用例的响应。将显示正面和负面测试的数量。
所以,我正在编写一个基本的 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
稍等一下,您将收到测试用例的响应。将显示正面和负面测试的数量。