为服务类编写phpunit测试功能

时间:2018-11-21 08:58:28

标签: phpunit phpunit-testing

嗨,我正在尝试为以下功能创建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 :(得分:1)

错误告诉您发生了什么,您正在将整数($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);
}

答案 1 :(得分:0)

在测试中,您假定文件存在,但如果不存在,则必须记住php函数filesize(位于getFileSize函数中)返回false,如果没有文件则生成E_WARNING。