在Phpunit测试中找不到细长/HTTP/环境



我正在使用Slim/Composer开发API,目前我正在尝试使用PHPUnit实现一些单元测试。当我通过命令行运行测试时,我一直遇到错误:

Fatal error: Class 'SlimHttpEnvironment' not found
in C:workspaceclientwebsiteclientapiclient-apisrctestclassesdaoGenreDaoTest.php
on line 15

我的composer.json看起来像这样:

{
    "require": {
        "slim/slim": "^3.1",
        "slim/php-view": "^2.0",
        "monolog/monolog": "^1.17",
        "robmorgan/phinx": "^0.5.1",
        "firebase/php-jwt": "^5.0",
        "vlucas/phpdotenv": "^2.4",
        "tuupola/slim-jwt-auth": "^2.3"
    },
    "autoload": {
        "psr-4": {
            "": ["classes/dao",
                 "classes/controller",
                 "classes/app",
                 "testclasses/dao"]
        }
    },
    "require-dev": {
        "phpunit/phpunit": "^5.7"
    }
}

我的测试课看起来像这样:

<?php
use SlimHttpEnvironment as Environment;
use SlimHttpRequest as Request;
use SlimHttpResponse as Response;
class GenreDaoTest extends PHPUnit_Framework_TestCase {
   public function testTemp() {
      $this->assertEquals(0, 0);
   }
   public function testGenres() {
      $environment = Environment::mock([
         'REQUEST_METHOD' => 'GET',
         'REQUEST_URI' => '/api/v1/genres'
      ]);
      $request = SlimHttpRequest::createFromEnvironment($environment);
      $response = new Response();
      $this->assertEquals('test', 'test');
   }
}
?>

如果我评论整个第二个测试,留下使用语句,则第一个测试将毫无问题。我以为这也许与测试文件的位置有关,所以我将其移至类/应用程序目录中,那里有其他类似导入的类,我看到了相同的结果,所以我不<<em>思考是文件所居住的位置。

我只能想到的唯一两件事是,当我通过命令行($ phpunit src/testClasses/dao/genredaotest.php)运行测试时,正在发生一些事情,或者我的作曲家设置有问题。

我通常是Java工程师,所以我可能会在PHP领域中缺少一些简单的东西:)

有人有任何建议吗?我非常感谢!

(我也知道我可能不应该在DAO测试中测试API请求/响应,我正在重构)

使用phpunit时,您可以告诉它在运行测试之前包括vendor/autoload.php。为此,您可以将phpunit.xml更改为:

<phpunit bootstrap="./vendor/autoload.php">
    ...
</phpunit>

或从命令行调用它时,您可以将--bootstrap vendor/autoload.php传递给phpunit命令:

phpunit --boostrap vendor/autoload.php <tests directory>

测试执行。我还建议阅读此问题及其答案。

我正在使用Slim 4,并且有同样的问题。

我更改了:

use SlimHttpRequest as Request;

use SlimPsr7Environment;

为我工作!

相关内容

  • 没有找到相关文章

最新更新