Laravel Homestead 中的 PHPUnit 测试失败
Posted
技术标签:
【中文标题】Laravel Homestead 中的 PHPUnit 测试失败【英文标题】:Failing PHPUnit tests in Laravel Homestead 【发布时间】:2017-05-24 08:58:22 【问题描述】:我有一个全新的 laravel/framework:master
克隆在 Homestead VM(在 Mac 主机上)上运行。我安装了依赖项(composer install
- 也是composer update
)。当我运行测试时,我得到了
There were 2 failures: 1) FilesystemTest::testIsReadable Failed asserting that true is false. /home/vagrant/Code/project/vendor/laravel/framework/tests/Filesystem/FilesystemTest.php:305 2) ValidationValidatorTest::testValidateActiveUrl Failed asserting that false is true. /home/vagrant/Code/project/vendor/laravel/framework/tests/Validation/ValidationValidatorTest.php:1825
$ php -v PHP 7.1.0-2+deb.sury.org~xenial+1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.1.0-2+deb.sury.org~xenial+1, Copyright (c) 1999-2016, by Zend Technologies with blackfire v1.14.1~linux-x64-non_zts71, https://blackfire.io, by Blackfireio Inc. $ phpunit --version PHPUnit 5.7.5 by Sebastian Bergmann and contributors.
我错过了什么吗?
更新
我用我为这些问题找到的解决方法回答了我自己的问题,尽管我并不完全理解它们。特别是我不知道这些问题对我的设置是否有特殊意义,或者是常见的并且可以预料到,在这种情况下,我想知道为什么默认的 Homestead 配置没有解决这些问题。
我暂时搁置这个问题,以防有人想解释或评论。
【问题讨论】:
看起来一个目录对 PHP 运行的用户没有读/写权限。 @JohnJoseph 实际上,失败的测试期望isReadable
为假。此外,另一个失败的测试与权限无关(据我所知)
【参考方案1】:
我发现dns_get_record
上抛出了一个异常(在active_url
验证中调用)。感谢this issue,我了解到将natdnshostresolver
选项设置为“关闭”可以为我解决这个问题。
在第一次失败的测试中,在chmod 000
一个文件之后,断言预计该文件不可读。但它始终保持可读性。然后我突然想到我正在对主机上同步的文件夹进行测试。 (也许它不能删除那里的读取权限?)。我从一个未同步的文件夹再次尝试,测试通过了。
【讨论】:
以上是关于Laravel Homestead 中的 PHPUnit 测试失败的主要内容,如果未能解决你的问题,请参考以下文章
使用 visualstudio code 编辑器调试执行在 homestead 环境中的 laravel 程序
window环境的homestead,laravel项目的hosts配置
基于 Laravel 开发博客应用系列 —— Homestead 和 Laravel 安装器