Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
将变量从php函数传递到另一个内部类-PHPUnit_Php_Phpunit - Fatal编程技术网

将变量从php函数传递到另一个内部类-PHPUnit

将变量从php函数传递到另一个内部类-PHPUnit,php,phpunit,Php,Phpunit,在创建了insidesetUp()两个变量之后,我不知道应该如何将它们传递给第二个函数并使用它们 这是我最后一次尝试: 类ADREQUESTEST扩展了PHPUnit_框架_测试用例{ protected function setUp(){ $env = \Slim\Environment::mock([ 'REQUEST_METHOD' => 'PUT', 'REQUEST_URI' => '/foo/bar',

在创建了inside
setUp()
两个变量之后,我不知道应该如何将它们传递给第二个函数并使用它们

这是我最后一次尝试: 类ADREQUESTEST扩展了PHPUnit_框架_测试用例{

   protected function setUp(){
     $env = \Slim\Environment::mock([
         'REQUEST_METHOD' => 'PUT',
         'REQUEST_URI' => '/foo/bar',
         'QUERY_STRING' => 'abc=123&foo=bar',
         'SERVER_NAME' => 'example.com',
         'CONTENT_TYPE' => 'application/json;charset=utf8',
         'CONTENT_LENGTH' => 15
     ]);
      $request = new \Slim\Http\Request($env);
   }

   function testInitFromHttpRequest_correctConstruction($request, $env){
      $fixture = new AdRequest();
      $fixture->initFromHttpRequest($request, $env);
   }
}
我也试着这样通过他们:

   function testInitFromHttpRequest_correctConstruction($request = $this->request, $env = $this->env)
但效果并不好。 我得到这个错误:

Missing argument 1 for adRequestTest::testInitFromHttpRequest_correctConstruction()

但是我正在传递两个参数,就像声明中定义的那样……我在这里遗漏了什么??thx

PHPunit框架不会向函数传递任何参数,除非您没有定义数据提供程序(不是您的案例/场景)。 您可以尝试此修改后的测试用例,该测试用例将您在setup方法中定义的变量定义为类范围:

class adRequestTest extends PHPUnit_Framework_TestCase{

   private $env;
   private $request;


   protected function setUp(){
     $this->env = \Slim\Environment::mock([
         'REQUEST_METHOD' => 'PUT',
         'REQUEST_URI' => '/foo/bar',
         'QUERY_STRING' => 'abc=123&foo=bar',
         'SERVER_NAME' => 'example.com',
         'CONTENT_TYPE' => 'application/json;charset=utf8',
         'CONTENT_LENGTH' => 15
     ]);
      $this->request = new \Slim\Http\Request($this->env);
   }

   function testInitFromHttpRequest_correctConstruction(){
      $fixture = new AdRequest();
      $fixture->initFromHttpRequest($this->request, $this->env);
      // write here your tests/assertions...
   }
}

希望获得此帮助

您必须在类级别更改$request和$env属性的范围(例如定义为$this->env)抱歉,我不太明白…更改属性的范围意味着什么?thx@Matteo,但我仍然收到此错误
adRequestTest::testInitFromHttpRequest\u未定义变量:env
…有什么线索吗?我尝试了
$env
env
啊!输入错误:不是
$this->$env
而是
$this->env
。我更新了我的答案。明白了…`$this->request=new\Slim\Http\request($this->env);“…谢谢您的帮助!我在安装方法中看到另一个输入错误:
$this->request=new\Slim\Http\request($this->env);
我不知道这是否能解决您的问题。。。