Example of Mock / mockery in tighten/novapackages

File tests/Unit/GitHubRepoTest.php (link to Github)
use App\GitHubRepo;
use App\Http\Remotes\GitHub;
use Mockery;
use Tests\TestCase;

class GitHubRepoTest extends TestCase
{
    /** @test */
    public function it_gets_the_latest_release_version_for_tagged_releases()
    {
        $this->mockGitHubWith([
            'releases' => collect([
                [
                    'name' => 'Release',
                    'tag_name' => 'v1.0',
                ],
            ]),
        ]);

        $repo = GitHubRepo::make('https://github.com/starwars/lightsabers');

        $this->assertEquals('v1.0', $repo->latestReleaseVersion());
    }

    /** @test */
    public function it_falls_back_to_master_when_there_are_no_releases()
    {
        $this->mockGitHubWith([
            'releases' => collect(),
        ]);

        $repo = GitHubRepo::make('https://github.com/starwars/x-wings');

        $this->assertEquals('master', $repo->latestReleaseVersion());
    }

    protected function mockGitHubWith($expectations)
    {
        $github = Mockery::mock(GitHub::class, $expectations);
        $github->shouldReceive('api')->andReturn($github);
        $github->shouldReceive('validateUrl')->andReturn(true);
        app()->instance(GitHub::class, $github);
    }
}

Additional resources on mock / mockery: