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

passing variable from php function to another inside class - PHPUnit

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

这是我最后一次尝试: class adRequestTest 扩展 PHPUnit_Framework_TestCase{

   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()

但我正在传递声明中定义的两个参数...我在这里缺少什么??谢谢

PHPunit 框架不会将任何参数传递给您的函数,除非您没有定义数据提供者(不是您的 case/scenario)。 您可以试试这个修改后的测试用例,它定义了您在设置方法中定义的变量的 class 范围:

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...
   }
}

希望对您有所帮助