Laravel 单元测试断言函数总是失败
Posted
技术标签:
【中文标题】Laravel 单元测试断言函数总是失败【英文标题】:Laravel unit testing assert functions always failing 【发布时间】:2020-06-04 07:29:00 【问题描述】:我在 Laravel 根目录下创建了一个非常基本的单元测试类-->tests-->Unit-->SimpleTest.php
在文件中,我导入了我需要测试的控制器类。而测试功能是这样的。
class SimpleTest extends TestCase
public function testLoadUsers()
$controller_obj = new UsersController;
$data_status = $controller_obj->load_users();
if($data_status != null)
$this->assertTrue(true);
else
$this->assertTrue(false);
我像这样在 Artisan 控制台中执行了这个测试用例,
php vendor/phpunit/phpunit/phpunit tests/Unit/SimpleTest.php
这总是失败。我的控制器功能也可以毫无问题地返回数据。我在没有定义任何条件的情况下进行了测试,只是,
$this->assertTrue(true);
然后就可以了。所以我假设 phpunit test 命令也没有任何问题。
【问题讨论】:
【参考方案1】:对不起,这不是一个直接的答案。 我想也许你应该通过这个检查 $data_status 的值。
class SimpleTest extends TestCase
public function testLoadUsers()
$controller_obj = new UsersController;
$data_status = $controller_obj->load_users();
$this->expectOutputString('Array');
print data_status;
【讨论】:
我也试过这种方法。使用 print_r() 和 var_dump() 这两个函数。基本上我在这条线上得到了错误- $data_status = $controller_obj->load_users();所以代码在进入 print_r() 函数之前退出。 所以问题不在于测试代码。$controller_obj->load_users();
在您的测试环境中无法正常工作。请查看this。
我也试过这个。但问题仍然存在。
UsersController
依赖什么?如果它需要数据库连接,您必须设置测试环境。我不知道你的laravel环境,所以我不能帮助你更进一步。如果可以,请考虑向我展示您的(最小)环境。
好的,我暂时不需要UserController。假设只是通过 $this->call('route_path'); 之类的路由访问;无论如何,我已经创建了 env 测试文件并定义了数据库连接。现在我得到一个 404 页面。在命令行中。以上是关于Laravel 单元测试断言函数总是失败的主要内容,如果未能解决你的问题,请参考以下文章