将变量从 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...
}
}
希望对您有所帮助
在 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...
}
}
希望对您有所帮助