在Symfony中运行phpunit时,当处于一个序列中时,无法定义映射项。

15

当我尝试在我的Symfony项目上运行phpunit时,我遇到了以下错误:

$ phpunit -c app

1) [...]\DefaultControllerTest::testIndex
Symfony\Component\Config\Exception\FileLoaderLoadException: Cannot import resource "/srv/http/typeform/app/config/config.yml" from "/srv/http/typeform/app/config/config_dev.yml".

/srv/http/typeform/vendor/symfony/src/Symfony/Component/Config/Loader/FileLoader.php:89
[...]
/srv/http/typeform/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php:39
/srv/http/typeform/src/QuickyForm/PublicBundle/Tests/Controller/DefaultControllerTest.php:11

Caused by
Symfony\Component\Yaml\Exception\ParseException: You cannot define a mapping item when in a sequence in "\/srv\/http\/typeform\/app\/config\/config.yml"

/usr/share/pear/Symfony/Component/Yaml/Parser.php:116
[...]
/srv/http/typeform/app/bootstrap.php.cache:520
/srv/http/typeform/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php:39
/srv/http/typeform/src/QuickyForm/PublicBundle/Tests/Controller/DefaultControllerTest.php:11

当我调用static::createClient();时,似乎它会崩溃。

这是我的config_test.yml文件:

imports:
    - { resource: config_dev.yml }

你似乎缺少config_test.yml中的大部分默认Symfony内容 - 有什么特别的原因吗? - redbirdo
因为我正在进行测试,当我使用默认的config_test.yml时,问题仍然存在。 - Gustavo Chaín
3个回答

30

你遇到的错误表明应用程序无法解析您的“config.yml”,因为“在序列中时不能定义映射项”。

这意味着,在yml文件中定义数组值时,您不能同时提供“key: value”形式的映射条目和“- item”形式的序列条目 - 所有值都必须是其中一种形式。

因此,以下内容是正确的:

group: 
  key: value
  key: value

这也可以:

group: 
  - item 
  - item 
这不好:
group: 
  key: value
  - item 

错误提示表明在您的config.yml中存在最后一个表单的出现,尽管如果是这种情况,它应该会导致在浏览器中运行应用程序时出现问题,而不仅仅是在phpunit下。


谢谢!最后我注意到,当我将Yaml解析器从2.x替换为1.x时,错误消失了。 - Gustavo Chaín
很不幸,这种格式会很有用:persons:\\ size: 2\\ - Alice\\ - Bob - alfC
1
@alfC 可以将其视为 JSON - 您可以拥有一个关联数组,其中键是字符串(也用于表示“对象”),或者是数字索引数组,其中数字键由顺序隐含确定,但您不能将两者结合在一起。因此,在 JSON 中,您的 persons 对象必须类似于 {size:2,data[Alice,Bob]}。 - redbirdo

0
此外,除了redbirdo的回答之外,你还应该知道,在所需标签的项目下可能需要使用“-”。例如:
UserLogin:
  type: "object"
  required:
    - email
    - password
  security:
    basicAuth: [] .......

0
我曾经遇到过这样的情况,当我创建值时,就像这样:
    fontColor:
      colors:
        - { label: 'Light', color: 'rgb(8,8,8)' }
        - { label: 'Dark', color: 'rgb(4,4,4)' }

经过一些混淆,我注意到在数值行的开头,我使用了一个mdash(—)而不是减号“-”。 看起来我从某个页面复制了这个符号,那个页面更注重漂亮的呈现而不是功能性。 在将mdash替换为减号后,一切都正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接