Мне нужно написать модульный тест для загрузки файла.Однако я не могу понять, как я могу опубликовать изображение, используя только php-код.
Функция тестирования до сих пор:
public function testValidateAddAdminFormSuccess() {
//prepare
$testFile = array(
'name' => 'test.jpeg',
'tmp_name' => 'Macintosh HD/Applications/mampstack-7.1.30-0/apache2/htdocs/',
'type' => 'image/jpeg',
'size' => '6717',
'error' => 0
);
$_FILES['image'] = $testFile;
$_POST['productName'] = 'test';
$_POST['price'] = 45;
$_POST['productDesc'] = 'test description';
$_POST['storeName'] = 'test store';
$_POST['amount'] = 204;
$_GET['product'] = 0;
$database = new DatabaseTest();
$adminModel = new AdminModel(NULL, $database);
//run
$adminModel->validateAddAdminForm();
//validate
$this->assertNotNull($adminModel);
$this->assertTrue($adminModel->valid);
}
Мой метод подтверждения загрузки в модели администратора:
private function validateUploadFile() {
$targetDir = 'images/';
$this->imgUrl = $targetDir . basename($_FILES['image']['name']);
$imageFileType = strtolower(pathinfo($this->imgUrl, PATHINFO_EXTENSION));
if (isset($_POST['submit']) && !empty($_FILES['image']['name']) || $this->isEditing() && !empty($_FILES['image']['name'])) {
$check = getimagesize($_FILES["image"]['tmp_name']);
if ($check !== false) {
} else {
$this->imageErr = 'File is not an image.';
}
if (file_exists($this->imgUrl)) {
$this->imageErr = "Sorry, file already exists.";
}
if ($_FILES["image"]["size"] > 2000000) {
$this->imageErr = "Sorry, your file is too large.";
}
if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
$this->imageErr = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
}
} else if ($this->isEditing()) {
$this->imageChanged = false;
} else {
$this->imageErr = 'Please upload an image.';
}
if (empty($this->imageErr)) {
move_uploaded_file($_FILES["image"]["tmp_name"], $this->imgUrl);
if ($this->isEditing() && !empty(basename($_FILES['image']['name']))) {
$this->imageChanged = true;
}
}
}
Файл не распознается в моем методе проверки загрузки.Метод работает отлично, хотя, как я уже тестировал его на странице администратора, он сам.Как загрузить изображение без использования веб-страницы?
Ошибка, установленная в imageErr: `Пожалуйста, загрузите изображение '.