【问题标题】:Laravel 5.6. Mockery. Mock method on property拉拉维尔 5.6。嘲讽。属性上的模拟方法
【发布时间】:2018-12-17 12:39:07
【问题描述】:

目前我有类似的东西(简化版)

app(ShopifySDK::class)->Order->get($params)

如何模拟这个类并检查get() 方法输入?

这不起作用。

$this->app->bind(ShopifySDK::class, function () {
            return Mockery::mock(ShopifySDK::class)
                          ->shouldReceive('Order->get')
                          ->once()
                          ->with([
                              'status'         => 'any',
                              'updated_at_min' => '2010-01-01T00:00:00+00:00',
                              'order'          => 'updated_at asc',
                              'limit'          => 250,
                              'page'           => 1,
                          ])->getMock();
        });

并给出这样的错误

ErrorException : Undefined property: Mockery_1__demeter_d588e5bd79af839e05009e561399d4e0_Order::$Order

【问题讨论】:

    标签: laravel mocking laravel-5.6 mockery laravel-testing


    【解决方案1】:

    解决方案非常简单

    $this->app->bind(ShopifySDK::class, function () use ($apiResponse) {
                $mock        = Mockery::mock(ShopifySDK::class)->makePartial();
                $mock->Order = Mockery::mock(ShopifySDK::class)
                                      ->shouldReceive('get')
                                      ->with([
                                          'status'         => 'any',
                                          'updated_at_min' => '2010-01-01T00:00:00+00:00',
                                          'order'          => 'updated_at asc',
                                          'limit'          => 250,
                                          'page'           => 1,
                                      ])->getMock();
                return $mock;
            });
    

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 2019-03-24
      • 2015-01-07
      • 2023-03-29
      • 2018-10-16
      • 2018-11-01
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      相关资源
      最近更新 更多