Laravel 4 为什么Laravel中的示例测试会因重定向而失败?
请为我解释一下为什么Laravel 4的示例测试失败 我的“/”路由重定向到My routes.php文件中的“login” (哦,我已经浏览了好几个网站、博客和教程。) 下面是ExampleTest.php中的代码Laravel 4 为什么Laravel中的示例测试会因重定向而失败?,laravel-4,phpunit,eloquent,Laravel 4,Phpunit,Eloquent,请为我解释一下为什么Laravel 4的示例测试失败 我的“/”路由重定向到My routes.php文件中的“login” (哦,我已经浏览了好几个网站、博客和教程。) 下面是ExampleTest.php中的代码 <?php class ExampleTest extends TestCase { /** * A basic functional test example. * * @return void */ public
<?php
class ExampleTest extends TestCase {
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
$crawler = $this->client->request('GET', '/');
$this->assertTrue($this->client->getResponse()->isOk());
}
}
测试失败,因为您得到的是302状态代码而不是200(因为存在默认routes.php文件中没有的重定向)
如果您想测试重定向,那么Laravel提供了几种方法
如果您使用的是命名路由:
$this->AssertRedirectedToRute('login')代码>
如果没有:
$this->assertRedirectedTo('login')代码>
对于测试响应状态代码:
$this->assertResponseStatus(302)代码>
测试失败,因为您得到的是302状态代码,而不是200(因为默认routes.php文件中没有重定向)
如果您想测试重定向,那么Laravel提供了几种方法
如果您使用的是命名路由:
$this->AssertRedirectedToRute('login')代码>
如果没有:
$this->assertRedirectedTo('login')代码>
对于测试响应状态代码:
$this->assertResponseStatus(302)代码>
如果没有测试代码,很难告诉您:将标题更改为重定向失败如果没有测试代码,很难告诉您:将标题更改为重定向失败谢谢。这是了解兔子踪迹的一个良好开端。在我标记一个最佳答案之前,我将关注更多的答案。我怀疑你是否会得到更多的答案,因为这是正确的答案。但是,这个答案没有解释重定向发生的原因(至少我无法理解)。我希望与routes.php文件有关,但不清楚其中的确切含义。也就是说,这意味着什么“因为存在默认routes.php中没有的重定向”。他怎么知道有一个重定向?在代码中哪里可以看到这种重定向?一个人怎么能禁用它呢?顺便说一句,我并没有故意否决这个答案,现在它不会让我改变我的投票:(@geoidesic我本来可以把它写得更好。OP修改了路由。php
和默认路由(/
)正在重定向到其他位置,而不是显示视图。测试未更新以反映更改,因此失败。谢谢。这是了解此兔子踪迹的良好开端。在我标记最佳答案之前,将观察更多答案。我怀疑您是否会获得更多答案,因为这是正确的答案。此答案无法解释原因e重定向正在发生(至少我无法理解)。我希望与routes.php文件有关,如前所述,但不清楚它到底是什么意思。例如,它意味着什么?–“因为有一个重定向不在默认routes.php中”。他怎么知道有重定向?在代码中哪里可以看到重定向?怎么可以禁用它?顺便说一句,我并没有故意否决这个答案,现在它不会让我改变我的投票:(@geoidesic我可以用更好的措辞。OP修改了路由。php
和默认路由(//code>)正在重定向到其他位置而不是显示视图。测试未更新以反映更改,因此失败。
<?php
class ExampleTest extends TestCase {
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
$crawler = $this->client->request('GET', '/');
$this->assertTrue($this->client->getResponse()->isOk());
}
}