Kpiny z podstawowych funkcji PHP jest trochę trudne.
Chyba masz coś takiego w swoim modelu postów.
public function processFile($file)
{
if (is_uploaded_file($file)) {
//process the file
return true;
}
return false;
}
Masz odpowiedni test podobny do tego.
public function testProcessFile()
{
$actual = $this->Posts->processFile('noFile');
$this->assertTrue($actual);
}
Ponieważ nie przesyłasz niczego podczas procesu testowania, test zawsze kończy się niepowodzeniem.
Powinieneś dodać drugą przestrzeń nazw na początku swojego PostsTableTest.php, nawet mając więcej przestrzeni nazw w jednym pliku, jest to zła praktyka.
<?php
namespace {
// This allows us to configure the behavior of the "global mock"
// by changing its value you switch between the core PHP function and
// your implementation
$mockIsUploadedFile = false;
}
Niż powinieneś mieć oryginalną deklarację przestrzeni nazw w formacie nawiasów klamrowych.
namespace App\Model\Table {
i można dodać metodę rdzenia PHP zostać nadpisane
function is_uploaded_file()
{
global $mockIsUploadedFile;
if ($mockIsUploadedFile === true) {
return true;
} else {
return call_user_func_array('\is_uploaded_file',func_get_args());
}
}
//other model methods
} //this closes the second namespace declaration
Więcej na jednostkę testowania CakePHP tutaj: http://www.apress.com/9781484212134