错误测试上传php单元symfony2

时间:2013-11-12 10:28:32

标签: forms symfony file-upload phpunit

我按照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”:“数组到字符串转换”,...

我做错了吗?或者在我的代码中遗漏了什么?

感谢您的帮助:)

编辑:

谢谢,但是,我在那里做了什么是在没有上传的情况下进行另一项测试,我仍然尝试了它并且它不起作用。我仍然有错误数组到字符串...我认为它来自功能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的新手,我真的不知道这个错误会来自哪里......

1 个答案:

答案 0 :(得分: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));