嗨,我正在尝试为以下功能创建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".
有人可以帮我犯什么错误吗?
谢谢。
答案 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。