从mock(php)返回变量
我想在函数中测试一些变量,但是这个函数不返回它 我有这样的功能:从mock(php)返回变量,php,unit-testing,phpunit,mockery,Php,Unit Testing,Phpunit,Mockery,我想在函数中测试一些变量,但是这个函数不返回它 我有这样的功能: <?php class Test { private $repo; public function __construct($repo) { $this->repo = $repo; } public function exemple() { $name = 'Example name'; $this->r
<?php
class Test
{
private $repo;
public function __construct($repo)
{
$this->repo = $repo;
}
public function exemple()
{
$name = 'Example name';
$this->repo->add($name);
}
}
<?php
use Mockery as M;
class someTest extends TestCase
{
public testConstract()
{
$repo = M::mock(SomeClass::class);
$repo->shouldReceive('add');
$test = new Test($repo);
$test->exemple();
}
}
您可以将withArgs指令用作。
例如,您可以按如下方式修改测试:
<?php
use Mockery as M;
class someTest extends TestCase
{
public testConstract()
{
$repo = M::mock(SomeClass::class);
$repo->shouldReceive('add')->withArgs(array('Example name'));
$test = new Test($repo);
$test->exemple();
}
}
谢谢!但是我的意思是,我如何才能断言QUALS('Example name',$name)?Hi@Iwan该断言隐含在期望的定义中。您可以尝试使用错误的arg消息(例如:->withArgs(数组('error input'))
好的,谢谢。但是如果我必须测试变量,我想我可以只返回$name
?@Iwan取决于场景,可能你需要将变量传递给被测试的方法,而不是它本身。如果变量依赖于其他被调用的方法,你可以隔离测试并模拟其他调用。希望这有帮助