Я пытаюсь написать тест для этого класса.
class Page
{
private function getPage(){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://example.com/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => "",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
return $response;
}
public function getTitle()
{
$page = $this->getPage();
$re = '/(<title>)(.*?)(<\/title>)/m';
preg_match_all($re, $page, $matches, PREG_SET_ORDER, 0);
return $matches[0][2];
}
}
И так как мой метод getPage обращается к внешнему ресурсу, мне нужно создать для него Mock
namespace Tests;
use PHPUnit\Framework\TestCase;
use App\Kernel\Page;
class PageTest extends TestCase
{
public function testGetTitle()
{
$stub = $this->createMock(Page::class);
$stub->method('getPage')
->willReturn('<title>Example Domain</title>');
$this->assertSame('Example Domain', $stub->getTitle());
}
}
Когда я вызываю тест, я получаю сообщение об ошибке:
1) Tests \ PageTest :: testGetTitle Попытка настроить метод "getPage", который не может быть настроен, поскольку он не существует, не был указан, final или stati c
Я смотрел там примеры тестирования, которые, как они говорят, делают, но почему возникает ошибка, я не помню - может кто-нибудь сказать мне, как протестировать такой код