php - 为什么 PHPUnit 测试在机器与互联网断开连接时运行得更快?

标签 php performance testing connection phpunit

我注意到,当我的笔记本电脑连接到互联网时,我的 PHPUnit 测试需要大约 90 秒到 200 秒才能完成。但是当我断开它与互联网的连接时,它会在不到 20 秒的时间内运行!!这让我既开心又难过!

在这两种情况下,所有测试都通过了,我确信我正在模拟对外部 API 的每个请求。

我使用 Laravel 和 MySQL 进行实际数据存储,并使用内存中的 sqlite 进行测试环境。我的开发环境也全部在 Docker 上运行。

这是否与 PHPUnit 或我的代码相关!!任何人都知道发生了什么。谢谢

更多信息

我使用的域是 something.dev,我的 API 使用 api.something.dev。每个测试至少对每个 API 端点进行一次调用。

DNS! 如果您认为这是由于 DNS 查找引起的:我将所有域和子域更改为 127.0.0.1 只是为了测试它,但它并没有帮助测试仍然很慢。这是否应该消除 DNS 查找的可能性!

此外,我尝试使用 The PHPUnit Bridge 模拟 DNS使用 PHPUnit 但我想由于缺少文档我无法使其工作,所以我不知道在之后将什么作为参数传递给 DnsMock::withMockedHosts([here!!])从我的 setUp() 函数调用它。

别的东西 我认为问题与数据存储有关,因为延迟发生在查询数据库之前和之后,主要是为了存储数据。

最佳答案

哇,没想到。原来我的测试很慢,因为 PHP Faker 提供的 image() 函数包 $faker->image()

我在我的一家工厂中使用它来为数据库准备一个假图像,我不知道它实际上是在下载图像并将它们存储在这样的文件夹中 /private/var/folders/51/5ybn3kjn8f332jfrsx7nmam00000gn/T/.

我能够通过在测试运行时监视 PHP 进程正在做什么来发现它在该目录中有一个打开的 .jpg 文件,所以我查看了我的代码与图像相关的任何内容并发现,经过约6小时的调试。快乐编码:)

关于php - 为什么 PHPUnit 测试在机器与互联网断开连接时运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268717/

相关文章:

c++ - 增加堆栈大小以使用 alloca()?

testing - 如何避免 npm 中的 "No test specified"错误?

testing - 如何在 playframework 中测试 Jobs?

PHP 日期让我很沮丧

php - 将 Bash 与 PHP 集成

java - 枚举是否比 public static final 常量更难维护?

xcode - 使用 by.text 进行排毒子串匹配

php - Set-Cookie 存在于 header 响应中,但在浏览器中缺失

php - PDO 和 Mysql 字符集

performance - 一般如何优化 F# 程序