热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在PHPUnit数据提供程序中设置和使用参数

如何解决《在PHPUnit数据提供程序中设置和使用参数》经验,请问有什么解决方案?

我正在尝试为使用全局参数(来自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()方法。

有其他方法可以做到这一点吗?


推荐阅读
author-avatar
旧瑾LA_364
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有