Как моя команда может передать необязательные аргументы другой команде Artisan? - PullRequest
0 голосов
/ 02 июля 2018

(обновленный вопрос, чтобы показать, что это не похоже на связанные вопросы)

Я написал команду 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?

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Изначально я неправильно понял ваш вопрос. Однако в документации также есть раздел, в котором описано , как программно вызывать команду Artisan .

Исходя из вашего вопроса, я предполагаю, что вы не знаете, как передать аргумент file, потому что при вызове в качестве команды key, так сказать, нет.

php artisan mydusk {file?} {--filter=}

Следующая информация получена из документации Laravel. key для аргумента file должно быть именем аргумента. Что касается необязательного аргумента, если аргумент file не указан при вызове команды mydusk, то null будет передано команде dusk.

public function handle() {
    // ...

    $file = $this->argument('file');
    $filter = $this->option('filter');

    return Artisan::call('dusk', [
        'file'     => $file,
        '--filter' => $filter,
    ]);
}
0 голосов
/ 03 июля 2018

Я был удивлен, узнав из своих экспериментов, что моя оригинальная функция действительно работает так, как я хотел, и я могу удалить инертную линию ($file = $this->argument('file');).

Передача аргумента file через \Artisan::call() на самом деле вообще не нужна.

@ Ответ Фубара, похоже, сделал те же ошибочные предположения, что и я.

Как @Jonas Staudenmeir намекнул в комментарии, Laravel\Dusk\Console\DuskCommand использует аргументы $_SERVER['argv'].

0 голосов
/ 02 июля 2018

Вы можете взглянуть и на эти ссылки, это может вам помочь.

Ответ на стек 1

Stack Answer 2

...