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 安装器

Homestead 和 Laravel 基础理解

Laravel Homestead 中 PHP 错误日志的位置

vagrant laravel homestead http服务器的IP地址