在内部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()
但我传递的声明中定义了两个参数......我在这里缺少什么? thx
答案 0 :(得分:2)
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...
}
}
希望这个帮助