我按照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的新手,我真的不知道这个错误会来自哪里......
答案 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));