Php 测试未链接到任何路由的控制器方法

Php 测试未链接到任何路由的控制器方法,php,laravel,unit-testing,web,testing,Php,Laravel,Unit Testing,Web,Testing,因此,我给出了控制器和web.php文件的示例 controller { public function add() { //Method called via web.php } public function multiply() { //how to access this while testing } } web.php route::get('/add','controller@add'); 现在我想进行单元测试 案

因此,我给出了控制器和web.php文件的示例

controller
{
   public function add() 
   {
      //Method called via web.php
   }
   public function multiply() 
   {
      //how to access this while testing
   }
}
web.php

route::get('/add','controller@add');
现在我想进行单元测试

案例1:add$response=$this->getroute'add';现在,当访问/add并且访问控制器方法add时,它将发送一个get请求。然后我可以使用各种断言来检查它的功能

案例2:此处乘法没有指定任何路由,因此它将无法访问控制器方法

在这种情况下,如何测试乘法方法

最新答案

因此,从所有的回答和评论中,我理解了拉雷维尔的观点

单元测试-创建一个控制器实例,然后调用要测试的方法。 特性测试——在这种测试模式中,我们将调用路由并测试是否命中了正确的方法,以及它是否按预期工作。
谢谢

您可以在测试文件中创建controller对象,如下所示

 public function testBasicTest()
 {
    $object = (new UsersController());
    $response = $object->methodName();
    $this->assertTrue($response);
 }

这些在我看来不像是单元测试。要进行单元测试,您需要实例化要测试的控制器,并调用要测试的方法。好的,我没有意识到这一点。让我查一查。无论如何,通过routes进行的FYI测试通常被称为功能测试。Laravel的默认结构有一个这样的示例以及一个单元测试的示例-@DarrylE.Clarke非常感谢:我得到了正确的响应,但当我试图使用ASERTSTAUS200断言时,我得到了正确的响应。错误是错误:调用undefined method Tests\Unit\templateTest::assertStatusLaravel为PHPUnit测试提供了多种自定义断言方法。可以通过json、get、post、put和delete测试方法返回的响应访问这些断言:从Laravel官方文档中,您可以指定可以执行哪些断言吗。assertTrue正在工作,assertStatus和assertJson不工作