#Laravel mock is not working

2 messages · Page 1 of 1 (latest)

umbral crow
#

In this code

$subscription = $this->academy->subscriptions()->create([
        'name' => 'default',
        'stripe_status' => 'active',
        'stripe_price' => $this->planPrice->stripe_id,
        'stripe_id' => 'sub_' . $this->faker->regexify('[A-Za-z0-9]{24}'),
    ]);

    $this->mock(get_class($subscription), function ($mockSubscription) {
        $mockSubscription->shouldReceive('incomplete')
            ->once()
            ->andReturn(false);

        $mockSubscription->shouldReceive('cancel')
            ->once()
            ->andReturnSelf();

        $mockSubscription->shouldReceive('update')
            ->once()
            ->andReturn(true);

        return $mockSubscription;
    });
    dd($subscription->cancel());

Why mocking is not working here?

umbral crow
#

How to refactor this part for instance subscription model?

if (app()->runningUnitTests()) {//TODO: fix this part
                if (app(Subscription::class)->incomplete()) {
                    app(Subscription::class)->cancelNow();
                } else {
                    app(Subscription::class)->cancel();
                }
            } else {
                if ($subscription->incomplete()) {
                    $subscription->cancelNow();
                } else {
                    $subscription->cancel();
                }
            }