Laravel 5.2:设置 APP_ENV 进行测试

Laravel 5.2: Setup APP_ENV for testing

为了测试,我需要使用另一个数据库而不是 local 环境。

我在开发流程中使用 homestead 和 Laravel 5.2 + Behat3 + Mink。

当我从主机 运行 behat 时,一切正常 - 变量设置为 APP_ENV=testing

但是我在设置 testing 环境时遇到了麻烦,当在 homestead 机器中做同样的事情时:APP_ENV 总是 local

  1. 为了测试环境 (APP_ENV) 我修改了标准 welcome.blade.php 接下来的方式:

    - <div class="title">Laravel 5</div>
    + <div class="title">Laravel 5 ({!! app()->environment() !!})</div>
    
  2. 我配置了behat.yml:

    default:
        extensions:
            Laracasts\Behat:
                env_path: .env.behat
            Behat\MinkExtension:
                default_session: laravel
                laravel: ~
    
  3. 我的测试环境变量在.env.behat:

    APP_ENV=testing
    APP_DEBUG=true
    DB_CONNECTION=sqlite
    
  4. 我做了我的 home.feature:

    Feature: Check home page
      In order to verify home page
      As a user
      I need to see text Laravel and an environment name
    
      @home
      Scenario: Home Page
        Given I am on the homepage
        Then I should see "Laravel 5 (testing)"
    

所以当我 运行 看到 Laravel 5 (local) 而不是 Laravel 5 (testing) 文本时:

    Feature: Check home page
      In order to verify home page
      As a user
      I need to see Laravel text

      @home
      Scenario: Home Page                       # features/home.feature:7
        Given I am on the homepage              # FeatureContext::iAmOnHomepage()
        Then I should see "Laravel 5 (testing)" # FeatureContext::assertPageContainsText()
          The text "Laravel 5 (testing)" was not found anywhere in the text of the current page. (Behat\Mink\Exception\ResponseTextException)

    --- Failed scenarios:

        features/home.feature:7

    1 scenario (1 failed)

我在配置中遗漏了什么或关于自定义设置我应该了解什么 Laravel 配置?

我不知道是不是这样,但请确保您的 Homestead.yaml 中没有:

variables:
    - key: APP_ENV
      value: local

如果这样做,请将其删除,然后您可以尝试配置您的 VM,但您很可能需要销毁它(您应该首先备份所有内容,例如数据库等)并在从文件中删除后重新创建.