使用javascript在laravel中进行Behat测试 - 不使用测试环境

时间:2015-03-29 21:45:43

标签: javascript php laravel selenium behat

我有一个使用Behat进行验收测试的Laravel 5项目。我也在Homestead Vagrant框中运行它。

我的网站中有一个使用Javascript的页面,我使用带有幻像js的Selenim2驱动程序。硒似乎工作正常。问题是,当我运行我的测试时,它使用开发数据库而不是测试数据库。这是我的.env.behat文件:

APP_ENV=acceptance
APP_DEBUG=true

DB_TYPE=sqlite
DB_PATH=acceptance.sqlite

这是我的behat.yml文件

default:
    extensions:
        Laracasts\Behat: ~
#            env_path: .env.behat
        Behat\MinkExtension:
            default_session: laravel
            laravel: ~
            javascript_session: selenium2
            base_url: http://127.0.0.1/
            selenium2:
                wd_host: "http://localhost:8643/wd/hub"
            selenium2: ~

当我运行不使用javascript的场景时,它会使用我的测试数据库(在.env.behat文件中指定。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

为了在测试Javascript应用程序时保留Behat的测试环境,您可以使用BehatLaravelJs包作为Behat的Laravel扩展程序的伴侣。

除了保护环境之外,它还在使用浏览器模拟器测试Javascript应用程序时解决了身份验证和数据库事务等其他限制。

答案 1 :(得分:0)

Web服务器无法看到命令行中设置的环境变量,因为它在单独的进程中运行。

您可以执行以下任一操作:

  • 在单独的测试前端控制器中设置测试环境。
  • 在单独的测试虚拟主机中设置测试环境。

在这两种情况下,您都需要更新base_url中的behat.yml

default:
    extensions:
        Behat\MinkExtension:
            base_url: http://127.0.0.1/app_test.php