如何使用模型函数测试自定义类(PSR-4自动加载),使用Laravel 5.2中的PHPUnit

时间:2017-06-13 10:44:58

标签: php laravel phpunit

我正在编写一个自定义类来处理我的项目中的一些独特操作,这是在Laravel 5.2中开发的。在那里,我已经调用了一些现有的模型函数来从数据库中获取一些值。如果我们运行代码,它将正常工作。但是当我编写不同的测试用例并单独测试这些类时,由于未建立连接,因此发生了数据库连接错误。

  

PHP致命错误:在第3314行的/var/www/html///ndndor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php中调用null上的成员函数connection()

我可以编写一个单独的测试代码来创建和删除数据库中的资源。但这不是我正在寻找的东西。我想使用模型类中编写的自定义函数,如下所示。

<?php
namespace ****\Paymentmethod;

use App\Models\Customer;
/**
* ****** Package - Additional helpers
* @package *******
* @author ********
* 
* Card is intended to handle the operations related to credit cards
*
*/
class Card
{
    private $var;

    public function __construct()
    {
        //constructor
    }

    public static function getCard($user_id)
    {
        return Customer::getCustomerInfo($user_id);
    }
}

这个Card类在另一个类中使用,这就是我正在测试的。 Customer是一个模型类,getCustomerInfo是一个自定义方法。

1 个答案:

答案 0 :(得分:1)

你的应用实例可能没有实例化。

查看Laravel在TestCase.php文件夹中提供的tests/,它会创建应用的实例。除非你的测试是完全不依赖于框架的纯“单元”测试,否则你需要确保你的测试extends TestCase类,以便它也可以实例化一个应用程序实例。 / p>

当您在测试之外运行时,它运行的原因是当您通过路由或控制台命令进入应用程序时,应用程序将为您自行启动。