Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从mock(php)返回变量_Php_Unit Testing_Phpunit_Mockery - Fatal编程技术网

从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取决于场景,可能你需要将变量传递给被测试的方法,而不是它本身。如果变量依赖于其他被调用的方法,你可以隔离测试并模拟其他调用。希望这有帮助