在setUp()
内部创建两个变量后,我不知道如何将它们传递给第二个函数并使用它们。
这是我最后一次尝试:类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
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...
}
}
希望对您有所帮助