如何使用Symfony中的NelmioAliceBundle Fixture选择STOF可翻译的语言环境

如何使用Symfony中的NelmioAliceBundle Fixture选择STOF可翻译的语言环境,symfony,locale,stofdoctrineextensions,nelmio-alice,Symfony,Locale,Stofdoctrineextensions,Nelmio Alice,Hy 有一段时间我知道我的测试场景有问题。 我在Symfony项目中使用behat/mink~2.0和Nelmio/Alice^2.x。 在我的一些项目中,我使用可翻译的条令扩展来管理我的商业实体上的i18n 当alice坚持使用我的fixture时,他似乎忽略了我的默认_locale参数,并且总是使用en作为locale值来创建它们 为了测试我的语言环境切换器,我需要一种在测试环境中为项目选择语言环境的方法,或者/或者使用不同的语言环境持久化fixture 我的安排如下 AcmmeBundle

Hy

有一段时间我知道我的测试场景有问题。 我在Symfony项目中使用behat/mink~2.0和Nelmio/Alice^2.x。 在我的一些项目中,我使用可翻译的条令扩展来管理我的商业实体上的i18n

当alice坚持使用我的fixture时,他似乎忽略了我的默认_locale参数,并且总是使用en作为locale值来创建它们

为了测试我的语言环境切换器,我需要一种在测试环境中为项目选择语言环境的方法,或者/或者使用不同的语言环境持久化fixture

我的安排如下

AcmmeBundle\CoreBundle\Entity\Universe:

universe1:
    title: <word()>
    templates: [@template1]
    collections: [@collection1, @collection2]
    categories: [@category1, @category2]
还有我的行为

default:
autoload:
     '': features/bootstrap
suites:
     default:
         contexts:
             - Victoire\Tests\Features\Context\FeatureContext
             - Victoire\Tests\Features\Context\JavascriptContext
             - Victoire\Tests\Features\Context\VictoireContext
             - Knp\FriendlyContexts\Context\MinkContext
             - Knp\FriendlyContexts\Context\AliceContext
             - Knp\FriendlyContexts\Context\EntityContext
             - Knp\FriendlyContexts\Context\TableContext
             - FeatureContext
             - PageContext
             - ApiContext
formatters:
     html:
         output_path: %paths.base%/web/build/html/behat
     pretty:
         output_path:
extensions:
    emuse\BehatHTMLFormatter\BehatHTMLFormatterExtension:
        name: html
        renderer: Twig,Behat2
        file_name: Index
        print_args: true
        print_outp: true
        loop_break: true
    jarnaiz\JUnitFormatter\JUnitFormatterExtension:
        filename: report.xml
        outputDir: %paths.base%/test-reports/
    Behat\Symfony2Extension:
        kernel:
            path: app/AppKernel.php
            debug: true
    Behat\MinkExtension\ServiceContainer\MinkExtension:
        base_url: 'http://127.0.0.1/app_test.php'
        selenium2:
           wd_host: 127.0.0.1:4444/wd/hub
           capabilities: { "browser": "firefox"}
        goutte: ~
        symfony2: ~
        default_session:    symfony2
        browser_name: firefox
    Knp\FriendlyContexts\Extension:
        entities:
            namespaces:
                - Acme
                - Victoire
        smartTag: smartStep
        alice:
            locale: fr_FR
            fixtures:
                Media:          features/fixtures/media.yml
                Template:       features/fixtures/template.yml
                User:           features/fixtures/user.yml
                Survey:         features/fixtures/survey.yml
                Tag:            features/fixtures/tag.yml
                Collection:     features/fixtures/collection.yml
                Category:       features/fixtures/category.yml
                Universe:       features/fixtures/universe.yml
                Page:           features/fixtures/Victoire/page.yml
                HomePage:       features/fixtures/Victoire/Pages/home.yml
            dependencies:
                Template:   [Media]
                User:       [Template]
                Survey:     [Tag]
                HomePage:   [Page]
按用途

并根据用途覆盖路由中的“_locale”参数


在route中覆盖“_locale”参数实际上答案很简单。 只需在翻译类中使用fixture

 universeTranslation1:
    title: <word()>
    locale: fr
    translatable: @universe1

universeTranslation2:
    title: <word()>
    locale: en
    translatable: @universe1

universeTranslation3:
    title: <word()>
    locale: fr
    translatable: @universe2

universeTranslation4:
    title: <word()>
    locale: en
    translatable: @universe2
UniverseTransation1:
标题:
地点:fr
可翻译:@universe1
大学翻译2:
标题:
地点:恩
可翻译:@universe1
大学翻译3:
标题:
地点:fr
可翻译:@universe2
大学翻译4:
标题:
地点:恩
可翻译:@universe2

事实上答案非常简单。 只需在翻译类中使用fixture

 universeTranslation1:
    title: <word()>
    locale: fr
    translatable: @universe1

universeTranslation2:
    title: <word()>
    locale: en
    translatable: @universe1

universeTranslation3:
    title: <word()>
    locale: fr
    translatable: @universe2

universeTranslation4:
    title: <word()>
    locale: en
    translatable: @universe2
UniverseTransation1:
标题:
地点:fr
可翻译:@universe1
大学翻译2:
标题:
地点:恩
可翻译:@universe1
大学翻译3:
标题:
地点:fr
可翻译:@universe2
大学翻译4:
标题:
地点:恩
可翻译:@universe2
 universeTranslation1:
    title: <word()>
    locale: fr
    translatable: @universe1

universeTranslation2:
    title: <word()>
    locale: en
    translatable: @universe1

universeTranslation3:
    title: <word()>
    locale: fr
    translatable: @universe2

universeTranslation4:
    title: <word()>
    locale: en
    translatable: @universe2