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

Har*_*h R 0 php testing unit-testing web laravel

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

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

web.php

route::get('/add','controller@add');
Run Code Online (Sandbox Code Playgroud)

现在我要执行单元测试

情况1:添加$response = $this->get(route('add'));现在,它将在/add访问时发送get请求,并且add将访问控制器方法。然后,我可以使用各种断言来检查其功能。

情况2:multiply此处未指定任何路由,因此将无法访问控制器方法。

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

更新的答案

因此,从所有答案和评论中,我已经了解到Laravel

  1. 单元测试-创建一个控制器实例,然后调用要测试的方法。
  2. 功能测试-在这种测试模式下,我们将调用路由并测试是否找到了正确的方法,并且该方法是否按预期工作。

谢谢!!

nar*_*a91 6

您可以在测试文件中创建控制器的对象,如下所示。

 public function testBasicTest()
 {
    $object = (new UsersController());
    $response = $object->methodName();
    $this->assertTrue($response);
 }
Run Code Online (Sandbox Code Playgroud)