【问题标题】:how to pass object to test method in laravel?如何将对象传递给laravel中的测试方法?
【发布时间】:2021-09-25 23:53:06
【问题描述】:

我有一个具有以下签名的课程:

class Service
{
    public function __construct(
        Class $a,
        Class $b,
        Class $c
    ) 

如何在测试方法中获取它的实例?通过构造函数调用会抛出如下错误

Too few arguments to function Service::__construct(), 0 passed 

但在应用程序本身中,此类工作,例如,在命令中:

class ServiceCommand extends AbstractCommand
{
    protected $service;


    public function __construct(Service $service)
    {
        parent::__construct();
        $this->service = $service;
    }

如何在 phpunit 测试方法中获取 Service 对象的实例?

【问题讨论】:

    标签: laravel testing phpunit


    【解决方案1】:

    但在应用程序本身中,此类有效

    您需要了解依赖注入以及 Service container 在 Laravel 中的工作原理。

    如何在 phpunit 测试中获取服务对象的实例-方法

    两种方式——一种用于功能测试,一种用于单元:

    功能

    使用服务容器注入依赖。

    $this->service = $this-app->make(Service::class);
    

    单位

    模拟你的依赖 - 阅读更多关于mocking

    $mockA = $this->createMock(Class::class);
    // ...
    $this->service = new Service($mockA...);
    

    【讨论】:

    • 请批准这个答案,如果它对你有帮助:)
    猜你喜欢
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多