Last active
August 29, 2015 14:04
-
-
Save laracasts/3c306e764be369ece23e to your computer and use it in GitHub Desktop.
I want an acceptance test for an Artisan command that generates some files with boilerplate. However, this command is part of a Composer package. I'm trying to figure out the best way to actually call Artisan from the package. Right now, I'm just assuming the framework and doing ../../../artisan. Is there an alternative/better way that you'd sug…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$saveDir = './tests/acceptance/tmp'; | |
$stubDir = './tests/acceptance/stubs'; | |
$commandToGenerate = 'FooCommand'; | |
$I = new AcceptanceTester($scenario); | |
$I->wantTo('generate a command and handler class'); | |
// Is there a better way to call the Artisan command? Without having to expect the framework and do ../../../? | |
$I->runShellCommand("php ../../../artisan commander:generate $commandToGenerate --properties='bar, baz' --base='$saveDir'"); | |
$I->seeInShellOutput('All done!'); | |
// My Command stub should match the generated class. | |
$I->openFile("{$saveDir}/{$commandToGenerate}.php"); | |
$I->seeFileContentsEqual(file_get_contents("{$stubDir}/{$commandToGenerate}.stub")); | |
// And my CommandHandler stub should match its generated counterpart, as well. | |
$I->openFile("{$saveDir}/{$commandToGenerate}Handler.php"); | |
$I->seeFileContentsEqual(file_get_contents("{$stubDir}/{$commandToGenerate}Handler.stub")); | |
$I->cleanDir($saveDir); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'd create a
runArtisanCommand
method in AcceptanceHelper to execute artisan commands.To match root directory you can use
codecept_root_dir
functionIf codecept_root_dir is not what you need you can use
../../../
inside ofrunArtisanCommand
Abyway that would be less ugly than using ../../ inside of tests