提问人:axsor 提问时间:8/26/2019 更新时间:8/26/2019 访问量:409
如何使用 laravel Facade 模拟引用传递参数?
How to mock pass-by-reference parameter using laravel Facade?
问:
我正在制作一个简单的 laravel 包来包装 bash 执行并使其能够模拟为 laravel 外观,但我有一个问题。
大多数运行 bash 命令的 Php 函数都使用引用传递参数,问题是,如何模拟方法的引用传递的返回值?
我的外墙:
class MyFacade
{
public function run(string $command, &$return_val): string
{
return system($command, $return_val);
}
}
我的测试:
$passByReferenceValue = 1;
MyFacade::shouldReceive('run')->with('ping google.com', $passByReferenceValue)
->once()->andReturn("PING RESULT");
$return = MyFacade::run('ping google.com', $passByReferenceValue);
$this->assertEquals(1, $passByReferenceValue);
$this->assertEquals("PING RESULT", $return);
它实际上有效,因为我设置了 $passByReferenceValue 的值并且它没有更改。我想要的是将空指针作为运行方法的第二个参数传递,并进行模拟以更改它。
例:
MyFacade::shouldReceive('run')->with('ping google.com', SOME_MAGIC_CODE_RETURNS_1)
->once()->andReturn("PING RESULT");
$resultCode = null;
$return = MyFacade::run('ping www.google.com', $resultCode)
$this->assertEquals(1, $resultCode);
$this->assertEquals("PING RESULT", $return);
谢谢
答: 暂无答案
评论