Я написал команду Laravel (полностью показана ниже), которая по сути является оболочкой для Dusk, так что я могу быть уверен, что заранее вызову некоторые другие функции. (В противном случае я неизбежно забуду перезагрузить среду тестирования.)
Он отлично работает, когда я запускаю php artisan mydusk.
namespace App\Console\Commands;
class DuskCommand extends BaseCommand {
protected $signature = 'mydusk {file?} {--filter=?}';
protected $description = 'refreshAndSeedTestingDb, then run Dusk suite of tests';
public function handle() {
$this->consoleOutput($this->description);
$resetTestingEnv = new ResetTestingEnv();
$resetTestingEnv->refreshAndSeedTestingDb();
$this->consoleOutput('refreshAndSeedTestingDb finished. Now will run Dusk...');
$file = $this->argument('file');//What to do with this?
return \Artisan::call('dusk', ['--filter' => $this->option('filter')]);
}
}
Как видите, я уже прочитал эти документы и понял, как написать $signature для приема необязательных аргументов.
Моя цель - иметь возможность иногда запускать php artisan mydusk, а также иметь возможность необязательно добавлять аргументы, например, когда я могу вызвать что-то вроде php artisan mydusk tests/Browser/MailcheckTest.php --filter testBasicValidCaseButtonClick (который передаст аргументы tests/Browser/MailcheckTest.php --filter testBasicValidCaseButtonClick обычной команде dusk).
Как я могу отредактировать последние 2 строки моей функции handle(), чтобы $file передавался в dusk?
Возможный дубликат Как передать несколько аргументов при запуске задач Laravel в командной строке?
@fubar Да, я уже читал эти документы. Мне кажется, вы не читали мой вопрос. Во всяком случае, сейчас я его отредактировал, чтобы было понятнее. Спасибо за вашу помощь. :-)






Вы также можете просмотреть эти ссылки, это может вам помочь.
Спасибо, но я уже читал эти ссылки. Мне кажется, вы не читали мой вопрос. Во всяком случае, сейчас я его отредактировал, чтобы было понятнее. Спасибо за вашу помощь. :-)
Нет проблем, я опубликую, если смогу помочь @Ryan
Я был удивлен, узнав из своих экспериментов, что моя исходная функция действительно работает так, как я хотел, и я могу удалить инертную строку ($file = $this->argument('file');).
Передача аргумента file через \Artisan::call() вообще не кажется необходимой.
Ответ @fubar, похоже, сделал те же ошибочные предположения, что и я.
Как намекнул @Jonas Staudenmeir в комментарии, Laravel\Dusk\Console\DuskCommand использует аргументы из $_SERVER['argv'].
Это работает, потому что Laravel\Dusk\Console\DuskCommand получает аргументы от $_SERVER['argv'].
Вы читали инструкцию? Приводятся примеры. laravel.com/docs/5.6/artisan#defining-input-expectations