我刚开始使用Guzzle
来验证使用PHPUnit
的API进行测试。 API驻留在我的本地计算机上,但Guzzle
的响应时间仍然是〜5秒!当我使用浏览器时,它会“立即”加载网站,这让我相信这是Guzzle
或cURL
的问题。
这是我的测试单位:
class MyTest extends \PHPUnit_Framework_TestCase {
/** @var GuzzleHttp\Client */
private $http;
protected function setUp() {
$this->http = new GuzzleHttp\Client(['base_uri' => 'http://test-site.local']);
}
protected function tearDown() {
$this->http = null;
}
public function testGet() {
$response = $this->http->request('GET', 'users');
$this->assertEquals(200, $response->getStatusCode());
$contentType = $response->getHeaders()["Content-Type"][0];
$this->assertStringStartsWith("application/json", $contentType);
}
}
什么可能导致响应时间长?
答案 0 :(得分:0)
似乎问题与使用.local
作为本地测试网址的顶级域名有关。显然,Mac OSx上的Bonjour服务使用.local
,以某种方式导致对cURL的干扰(但对于浏览器不够奇怪)。有一个类似的question on the Superuser StackExchange。
通过编辑我的hosts
文件和虚拟主机配置来解决此问题,以使用.dev
代替.local
:
protected function setUp() {
$this->http = new GuzzleHttp\Client(['base_uri' => 'http://test-site.dev']);
}