我正在运行bitbucket管道来使用PHP Unit执行所有单元测试。当我在本地执行测试时,所有这些都通过。但是在bitbucket管道上总是会失败。在这种情况下,测试与我们正在检查的外部服务有关。
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use MyService;
class MyTest extends TestCase
{
/**
* Test the dummies in this new system
*
* @return void
*/
public function testDumies()
{
$games = DummyService::getDummies();
$this->assertTrue(count($dummies) > 0);
}
public function testDummiesOfUser()
{
$dummies = DummyService::getDummiesOfUser('someemail@mail.com');
$this->assertTrue(count($dummies) > 0);
}
}
以下是获取假人的服务
<?php
namespace App\Services;
class DummyService {
/**
* Get dummies
*
* @return void
*/
public function getDummies() {
$collection = [];
$games = $this->getDummiesInUrl('http://my-project/api/v1/platform/dummies');
foreach($dummies as $dummy) {
$collection[] = $dummy;
}
return $collection;
}
/**
* Retrieves the dummies in url
*
* @param string $endpoint
* @return array
*/
public function getDummiesInUrl($endpoint) {
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', $endpoint);
$body = $res->getBody();
$body = json_decode($body, true);
$data = $body['data'];
$dummies = $data['dummies'];
return $dummies;
}
/**
* Returns the dummies of an user
*
* @param string $email
* @return array
*/
public function getDummiesOfUser($email) {
$collection = [];
$dummies = $this->getDummiesOfUserInUrl('http://myroute/api/v1/platform/dummies/user', $email);
foreach($dummies as $d) {
$collection[] = $d;
}
return $collection;
}
/**
* Get gameplays in url
*
* @param string $endpoint
* @param string $email
* @return array
*/
public function getDummiesOfUserInUrl($endpoint, $email) {
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', $endpoint, ['query' => ['email' => $email]]);
$body = $res->getBody();
$body = json_decode($body, true);
$data = $body['data'];
$dummies = $data['dummiess'];
return $dummies;
}
}
但是当在bitbucket管道上测试时,我遇到了以下错误:
PDOException: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
和Caused by PDOException:PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]
答案 0 :(得分:0)
显然,对于mysql 8的新公共版本,很多东西都发生了变化。因此,为了继续使用您的管道,我编辑了我的bitbucket-pipelines.yml
并将mysql映像版本从mysql更改为mysql:5.7.22
definitions:
services:
mysql:
image: mysql:5.7.22
environment:
MYSQL_DATABASE: 'homestead'
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_USER: 'homestead'
MYSQL_PASSWORD: 'secret'