我希望测试我的 Laravel Artisan 命令。所以我需要模拟一个对象并存根该模拟对象的方法。在我的测试中,我不能使用真实的 SFTP 环境。
这是我的命令的 handle()
方法:
public function handle()
{
$sftp = new SFTP('my.sftpenv.com');
$sftp->login('foo', 'bar');
}
我想在我的测试中模拟SFTP:
$sftp = $this->createMock(SFTP::class);
$sftp->expects($this->any())->method('login')->with('foo', 'bar');
$this->artisan('import:foo');
在运行测试时,出现了一个
Cannot connect to ...:22
的错误,这来自于SFTP
原始login
方法。因此,模拟/存根没有生效。我的问题是:在Laravel Artisan命令测试中,我该如何模拟一个对象?
$this->artisan('import:foo');
- Mesuti$this->app->bind(SFTP::class, $sftp);
- Mesuti