Рассмотрим следующий сценарий (это не производственный код):
class MyClass {
public function myMethod() {
// create a directory
$path = sys_get_temp_dir() . '/' . md5(rand());
if(!mkdir($path)) {
throw new Exception("mkdir() failed.");
}
// create a file in that folder
$myFile = fopen("$path/myFile.txt", "w");
if(!$myFile) {
throw new Exception("Cannot open file handle.");
}
}
}
Правильно, так какая проблема? В отчетах о покрытии кода эта строка не распространяется:
throw new Exception("Cannot open file handle.");
Это правильно, но поскольку я создаю папку выше логически, казалось бы невозможным сбой fopen()
(за исключением, может быть, в экстремальных обстоятельствах, таких как диск со 100%).
Я мог бы игнорировать код из охвата кода, но это своего рода обман. Можно ли каким-либо образом высмеять файловую систему, чтобы она могла распознать myFile.txt
и высмеять файловую систему, неспособную создать файл?