0

我按照 symfony 网站上的教程对我的控制器进行 phpunit 测试。

我试图在表单上测试上传,我在这个表单上有 3 个字段:标题、描述和文件。

我用 :

public function testScenarioAdd() {

    $client = static::createClient();

     $x_wsse = 'UsernameToken Username="username@fai.fr", PasswordDigest="aeirugbjcUbfmùJK", Nonce="OTMzOGMwYzFkYTk2MzJmYzBh", Created="2013-11-12T10:22:15+01:00"';
    //X_Wsse is for the connection systeme on my application.

    $image = new UploadedFile(
        '/past/to/your/images.jpg',
        'images.jpg',
        'image/jpeg',
        100000
    );

    $crawler = $client->request('POST', '/ad/create', array('ad_form' => array('title' => 'test', 'description' => 'Test description')),array(), array('CONTENT_TYPE' => 'application/x-www-form-urlencoded', 'HTTP_X-WSSE' => $x_wsse));

    $response = $client->getResponse()->getContent();
    $json_response = json_decode($response);
    print_r($response);
}

当我启动它时,我有一个错误提示: {"app_error":{"success":500,"result":[{"message":"Array to string conversion",...

难道我做错了什么 ?或在我的代码中遗漏了什么?

谢谢你的帮助 :)

编辑 :

谢谢,但是,我在那里所做的工作是在没有上传的情况下进行另一个测试,我仍然尝试过它并且它不起作用。我仍然有要字符串的错误数组...我认为它来自功能 UplaodedFile 或者可能来自我的控制器本身,因为当我尝试使用 symfony 网站上的其他解决方案时

$photo = array( 'tmp_name' => '/path/to/photo.jpg', 'name' => 'photo.jpg', 'type' => 'image/jpeg', 'size' => 123, 'error' => UPLOAD_ERR_OK );

随着把

$crawler = $client->request('POST', '/ad/create', array('ad_form[title]' => 'test', ad_form[description] => 'test description'),array('file' => $image),array('CONTENT_TYPE' => 'application/x-www-form-urlencoded', 'HTTP_X-WSSE' => $x_wsse));

我的控制器的重要部分是:

            if ('POST' === $request->getMethod()) {
            $form->bind($request);

            if ($form->isValid())
            {
                $Ad->preCreate();
                $odm->persist($Ad);
                $odm->flush();
                $odm->clear();

                $data = $this->listAction($request, 1, 5);
                Tags::setEvent($request, $this->container, 'member.create.ad', $user->getId(), $Ad->getId());

                return $data;

            } else {
                $data = Errors::formatJson($form, $this->container);
            }
        }
    }

    return new JsonResponse(array('ad_create' => $data));

我是 symfony 的新手,我真的不知道这个错误是从哪里来的......

4

1 回答 1

0

Client::Request 方法希望您为其提供一维数据数组。所以试试这个代码:

<?php
//...
$crawler = $client->request('POST', '/ad/create', 
    array('ad_form[title]' => 'test', 
          'ad_form[description]' => 'Test description'),
    array(), 
    array('CONTENT_TYPE' => 'application/x-www-form-urlencoded', 'HTTP_X-WSSE' => $x_wsse));
于 2013-11-12T11:30:05.007 回答