代码之家  ›  专栏  ›  技术社区  ›  D.R.

拉维尔5.6。嘲弄。属性上的模拟方法

  •  1
  • D.R.  · 技术社区  · 6 年前

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

    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
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   D.R.    6 年前

    解决的办法很简单。

    $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;
            });
    
    推荐文章