简单的控制器功能测试失败
Posted
技术标签:
【中文标题】简单的控制器功能测试失败【英文标题】:Simple controller functional test failing 【发布时间】:2014-06-05 20:15:24 【问题描述】:这是我对 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() 的工作原理,从默认示例复制没有通过吗?我的测试位于 AcademicsBundle > 测试 > AdviseeControllerTest.php
输出的消息(带有--verbose和-debug)是:
...\AcademicsBundle\Tests\Controller\AdviseeControllerTest::testCreatePageContainsContent
Failed asserting that 0 is greater than 0.
【问题讨论】:
运行测试时的错误信息是什么? @Javad 我编辑了我的问题以包含这个 确保/create/adviseeSet
为真。确保您的测试类在 namespace Academics\AcademicsBundle\Tests\Controller;
的命名空间中
我的命名空间是正确的,与一些通过实体单元测试相比。
你在测试类的构造中有什么东西吗?你清除缓存了吗?
【参考方案1】:
我的爬虫需要跟踪重定向,所以我添加了:
$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>'
我在尝试的重定向中看到了缩短的路径。
【讨论】:
嗨,我遇到了同样的问题,但我在虚拟主机上。你是如何添加 followRedirect() 的?像这样 ?$crawler = $client->request('GET', '/blog/'); $crawler->followRedirect();
以上是关于简单的控制器功能测试失败的主要内容,如果未能解决你的问题,请参考以下文章
尝试通过 AutoConfigureMockMvc 自动配置时集成测试失败
TryUpdateModel 仅在更新子对象的单元测试中失败
Spring Boot 应用程序在 mockmvc 测试中失败