作者:旧瑾LA_364 | 来源:互联网 | 2023-01-27 15:04
我正在尝试为使用全局参数(来自YML文件)的服务编写测试。
我正在方法中检索此参数setUp()
,但是当我尝试在中使用它们时@dataProvider
,会引发错误。
class InterpreterServiceTest extends KernelTestCase
{
private $container;
private $service;
private $citiesMap;
public function setUp()
{
self::bootKernel();
$this->cOntainer= self::$kernel->getContainer();
$this->service = $this->container->get('geolocation.interpreter');
$this->citiesMap = $this->container->getParameter("citiesmap");
self::tearDown();
}
/**
* @dataProvider locationsProvider
*/
public function testCompanyCityFromCity($location, $expected)
{
$city = $this->service->getCompanyCityFromCity($location);
$this->assertEquals($expected, $city);
}
public function locationsProvider()
{
$return = array();
foreach ($this->citiesMap as $area) {
$return[] = [
$area['external_service_area'],
$area['company_area']
];
}
return $return;
}
}
为foreach()提供了无效的参数
如果我手动写的返回locationsProvider()
它的作品
return [
["Barcelona", "Barcelona"],
["Madrid", "Madrid"],
["Cartagena", "Murcia"]
];
我也检查了foreach setUp()
,它返回正确的预期数组。
看来@dataProvider
是执行之前的setUp()
方法。
有其他方法可以做到这一点吗?