这是我第一次对Symfony2进行控制器单元测试。尽可能完整地从文档中复制,我只是断言包含一些文本。
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class AdviseeControllerTest extends WebTestCase
{
public function testCreatePageContainsContent()
{
$client = static::createClient();
$crawler = $client->request('GET', '/create/adviseeSet');
$this->assertGreaterThan(
0,
$crawler->filter('html:contains("Name")')->count()
);
}
}
我的路线如下:
advisee_set_create:
pattern: /create/adviseeSet
defaults: { _controller: AcademicsBundle:Advisee:create }
此测试失败,以及声明包含任何类型内容的任何其他测试。有什么我不知道$ client-> request()或$ crawler-> filter()是如何工作的,从Default示例复制没有通过?我的测试生活在AcademicsBundle>测试> AdviseeControllerTest.php
输出的消息(同时包含--verbose和-debug)是:
...\AcademicsBundle\Tests\Controller\AdviseeControllerTest::testCreatePageContainsContent
Failed asserting that 0 is greater than 0.
答案 0 :(得分:0)
我的抓取工具需要遵循重定向,所以我添加了:
$client->followRedirect();
通过测试
$content = $client->getResponse()->getContent();
$this->assertEquals('shmee', $content);
我能够获得更有用的失败信息
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'shmee'
+'<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta http-equiv="refresh" content="1;url=http://localhost/create/adviseeSet" />
+
+ <title>Redirecting to http://localhost/create/adviseeSet</title>
+ </head>
+ <body>
+ Redirecting to <a href="http://localhost/create/adviseeSet">http://localhost/create/adviseeSet</a>.
+ </body>
+</html>'
我在尝试重定向时看到了缩短的路径。