написать тестовую функцию phpunit для класса обслуживания - PullRequest
0 голосов
/ 21 ноября 2018

Привет, ребята, я пытаюсь создать тест phpunit для функции ниже.

/**
 * Get file size
 *
 * @param string $filePath
 * @return int
 */
public function getFileSize(string $filePath): int
{
    if (!file_exists($filePath)) {
        return 0;
    }

    return filesize($filePath);
}

Пока я пробовал вот так

/**
 * Test get file size with invalid data
 */
public function testGetFileSizeWithValidData()
{
    $filePath = 'rgreherher';
    $service = new Tickets_Service_ContactMomentVehicle();
    $result = $service->getFileSize($filePath);

    $this->assertSame($result, $filePath);
}

Так что, когда я бегу в своем терминале, яя получаю ошибку как

<string:rgreherher> does not match expected type "integer".

Может кто-нибудь помочь мне, какую ошибку я сделал.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

В своем тесте вы предполагаете, что файл существует, но если нет, вы должны помнить, что функция php filesize (которая находится в вашей функции getFileSize) возвращает false и генерирует E_WARNING, если файла нет.

0 голосов
/ 21 ноября 2018

Ошибка говорит вам точно, что происходит, вы сравниваете целое число ($result) со строкой ($filePath).

Если я правильно понимаю ваш тестовый пример, вы должны заменить$filePath с размером $filePath.

public function testGetFileSizeWithValidData()
{
    $filePath = 'rgreherher';
    $filePathSize = 55; // actual file size of $filePath

    $service = new Tickets_Service_ContactMomentVehicle();
    $result = $service->getFileSize($filePath);

    $this->assertSame($result, $filePathSize);
}
...