Test uploadu souboru – přidání uploadovaných souborů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kikinet
Člen | 35
+
+1
-

Ahoj, snažím se otestovat upload souboru.

Jak odeslat nějaký file při testování? Pročítala jsem tuhle diskuzi, ale file se neodešle a tudíž to končí chybou, že file je required.

public function testAddManual(){
        $filearr = [
                "name" => "test.jpg",
                "type" => NULL,
                "size" => 93239,
                "tmpName" => "/tmp/phpj7TnpZ",
                "error" => 0
            ];

        $file = new Nette\Http\FileUpload($filearr);

        $get = [
            "action" => "addManual"
        ];
        $post = [
            "do" => "manualFormControl-manualForm-submit",

            "files_name" => "test",
            "files_description" => "test",
            "file" => $file,
            "tags" => "test".Nette\Utils\Strings::random(5)
        ];
        $request = new Nette\Application\Request("Admin:Manual", "POST", $get, $post, ['picture' => $file]);
        $request->files = ['picture' => $file];
        $response = $this->presenter->run($request);
        Assert::type('Nette\Application\Responses\RedirectResponse', $response);
    }
Blujacker
Člen | 89
+
0
-

Zdravim,

hlasim se ke stejnemu problemu jako Kikinet – snazim se testovat uploadovani souboru ale nedari se mi procpat testovaci soubor do requestu. Zkousel jsem je pridavat jak pres konstruktor \Nette\Application\Request tak i pres metodu setFiles(['file' => new Nette\Http\FileUpload(...)]).

Podarilo se nekomu rozjet testovani pres Nette\Tester a uploadovani souboru?

Mnohokrat dekuji!

Martk
Člen | 661
+
+1
-

Mělo by to být podobné i u Nette\Tester. Tady

Blujacker
Člen | 89
+
0
-

Antik napsal(a):

Mělo by to být podobné i u Nette\Tester. Tady

Nejsem si jisty ze to chapu, v Tvojem reseni se soubory (instance \Nette\Http\FileUpload) posilaji pomoci \Nette\Application\Request jako 4 parametr – tedy jako POST parametry. Ale soubory se maji podle dokumnetace davat az jako 5 paremetr.

Zkousel jsem oba postupy

$file = new \Nette\Http\FileUpload([
    'name' => 'test.jpg',
    'type' => 'image/jpg',
    'size' => 11,
    'tmpName' => 'test/test.jpg',
    'error' => 0,
]);
$post = [
    'file' => $file,
    'do' => 'importCustomersFormControl-importCustomersForm-submit',
];
$files = ['file' => $file];
$request = new \Nette\Application\Request('Customers:ImportCustomers', 'POST', [], $post, $files);

Nicmene v obsluzne metode formulare importCustomersForm se ten testovaci soubor neobjevi – pokud si dumpnu $values v onSuccess metode, dostanu:

Nette\Utils\ArrayHash #39c3
    file => Nette\Http\FileUpload #1f14
      |  name private => NULL
      |  type private => NULL
      |  size private => NULL
      |  tmpName private => NULL
      |  error private => 4

Kde delam chybu prosim?

Dekuji!

Martk
Člen | 661
+
+1
-

@Blujacker Přejmenuj tmpName na tmp_name

Blujacker
Člen | 89
+
0
-

Antik napsal(a):

@Blujacker Přejmenuj tmpName na tmp_name

Dekuji, to je ono!