Php 测试未链接到任何路由的控制器方法
因此,我给出了控制器和web.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'); 现在我想进行单元测试 案
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不工作