rke*_*eet 6 phpunit symfony phpstorm docker
我遇到的问题是,仅在PhpStorm中单击“运行”(在Windows上为Shift + F10)时,PhpUnit不起作用(正确地,某些情况确实发生了)。
首先,接着是教程/设置指南:
所以现在,除了没有以外,几乎有了一个可行的设置。
Testing started at 15:21 ...
[docker://IMAGE_NAME:latest/]:php bin/.phpunit/phpunit-6.5/phpunit --configuration /var/www/html/phpunit.xml.dist --teamcity
PHPUnit 6.5.14 by Sebastian Bergmann and contributors.
Testing Project Test Suite
Fatal error: Uncaught PDOException: SQLSTATE[HYT00]: [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired in /var/www/html/src/Legacy/Connection/MssqlConnection.php on line 178
PDOException: SQLSTATE[HYT00]: [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired in /var/www/html/src/Legacy/Connection/MssqlConnection.php on line 178
Call Stack:
0.0003 393408 1. {main}() /var/www/html/bin/.phpunit/phpunit-6.5/phpunit:0
0.0571 923544 2. PHPUnit\TextUI\Command::main() /var/www/html/bin/.phpunit/phpunit-6.5/phpunit:17
0.0571 923656 3. Symfony\Bridge\PhpUnit\Legacy\CommandForV6->run() /var/www/html/bin/.phpunit/phpunit-6.5/src/TextUI/Command.php:148
0.2019 4269152 4. Symfony\Bridge\PhpUnit\Legacy\TestRunnerForV6->doRun() /var/www/html/bin/.phpunit/phpunit-6.5/src/TextUI/Command.php:195
0.2158 4697272 5. PHPUnit\Framework\TestSuite->run() /var/www/html/bin/.phpunit/phpunit-6.5/src/TextUI/TestRunner.php:545
0.2181 4702968 6. PHPUnit\Framework\TestResult->startTestSuite() /var/www/html/bin/.phpunit/phpunit-6.5/src/Framework/TestSuite.php:689
0.2233 4717824 7. App\Tests\Helper\DeleteDBOnceListener->startTestSuite() /var/www/html/bin/.phpunit/phpunit-6.5/src/Framework/TestResult.php:368
0.2270 4739216 8. App\Legacy\Connection\MssqlConnection->databaseExists() /var/www/html/tests/Helper/DeleteDBOnceListener.php:55
0.2270 4739216 9. App\Legacy\Connection\MssqlConnection->findDbFromDSN() /var/www/html/src/Legacy/Connection/MssqlConnection.php:38
0.2271 4740104 10. PDO->__construct() /var/www/html/src/Legacy/Connection/MssqlConnection.php:178
Process finished with exit code 255
Run Code Online (Sandbox Code Playgroud)
显然这是:无法连接到数据库。但!
如果我登录到Docker实例,然后运行该命令,它将成功!命令:
php bin/.phpunit/phpunit-6.5/phpunit --configuration /var/www/html/phpunit.xml.dist
Run Code Online (Sandbox Code Playgroud)
产生输出:
user@hash:/var/www/html# php bin/.phpunit/phpunit-6.5/phpunit --configuration /var/www/html/phpunit.xml.dist
PHPUnit 6.5.14 by Sebastian Bergmann and contributors.
Testing Project Test Suite
Dropping current database...
.Creating database..
................................................................ 65 / 80 ( 81%)
............... 80 / 80 (100%)
Time: 3.25 minutes, Memory: 56.12MB
OK (80 tests, 336 assertions)
Run Code Online (Sandbox Code Playgroud)
那么,为什么在使用“运行”执行时,在PhpStorm中执行此操作会失败?我错过了设置吗?
自从您三年前提出问题以来,您自己可能也回答了这个问题。不过我会把我的答案留给以后进入这里的人。
错误HYT00 是来自 MSSQL 客户端的超时错误。这基本上意味着您的客户端无法访问服务器(或者响应速度非常慢)。
如果您将 PHPStorm 配置为使用 docker 容器作为解释器,那么它就是这样做的 - 仅使用 docker 容器内的 PHP作为解释器,但不在容器内运行它。您仍在主机环境、主机网络等中运行它。
确保您可以从主机访问数据库,并且在运行测试时使用正确的连接字符串。在您的测试配置中,您可能拥有 docker 的内部主机名(例如,在 docker 容器之间,您可以使用容器名称作为主机名)。从主机运行时,您将需要一个可访问的 hsotname,就像localhost:1433
您将端口映射到主机一样。
通过此检查,测试应该正确执行。
只是一个题外话 - 除非您正在进行集成测试,否则在单元测试中连接到 SQL 并不是一个好主意。最好使用模拟:)
归档时间: |
|
查看次数: |
350 次 |
最近记录: |