我在http://web.dev/web/app_behat.php访问我的页面,当我在浏览器中手动执行此操作时,它可以正常工作。
所以我设置了
base_url: "http://web.dev/web/app_behat.php/"
我没有匹配任何路线的路线但是如果我设置
base_url: "http://web.dev/app_behat.php/"
路由似乎匹配,但我错过了表错误,我已设置SymfonyDoctrineContext来处理模式创建。
全behat.yml:
default:
formatter:
name: progress
context:
class: FootballRadar\Features\Context\FeatureContext
extensions:
Behat\Symfony2Extension\Extension:
mink_driver: true
kernel:
env: test
debug: true
Behat\MinkExtension\Extension:
base_url: "http://web.dev/app_behat.php/"
default_session: symfony2
show_cmd: 'open -a "Google Chrome" %s'
编辑:
我的config_behat.yml:
imports:
- { resource: "config_dev.yml" }
assetic:
debug: true
use_controller:
enabled: true
profiler: false
framework:
test: ~
session:
storage_id: session.storage.mock_file
profiler:
collect: false
web_profiler:
toolbar: false
intercept_redirects: false
swiftmailer:
disable_delivery: true
doctrine:
dbal:
connections:
default:
driver: pdo_sqlite
user: behat
path: %kernel.root_dir%/behat/default.db.cache
charset: utf8
model:
driver: pdo_sqlite
user: behat
path: %kernel.root_dir%/behat/model.db.cache
charset: utf8
monolog:
handlers:
test:
type: test
似乎所有人都误解了我的问题和/或完全忽略了我的第一句话。
我有一个正在运行的应用程序,我使用
访问它http://web.dev/web/(http://web.dev/web/app.php/)< - for prod
http://web.dev/web/app_dev.php/< - for dev
http://web.dev/web/app_behat.php/< - for behat
所有这些都像我在chrome或其他浏览器中手动使用它们一样工作
这就是为什么我很惊讶为什么http://web.dev/web/app_behat.php/
给了我
No route found for "GET /web/app_behat.php/login"
和
http://web.dev/app_behat.php/
给出了
SQLSTATE[HY000]: General error: 1 no such table: users_new
通过很少的调试,我确认SymfonyDoctrineContext
确实读取了我的实体映射并发出查询来创建db模式,这两个db文件都具有读/写权限(为了测试我给了他们777)
我刚刚意识到的另一件事是,所有这些错误都会写入test.log
文件而不是behat.log
。我使用$kernel = new AppKernel('behat', true);
也许我只是大大误解了应该如何工作?
EDIT2:
我注意到在为任一路径运行behat功能时没有为apache访问日志创建条目
我正在使用composer.json 的版本
"behat/behat": "2.5.*@dev",
"behat/common-contexts": "1.2.*@dev",
"behat/mink-extension": "*",
"behat/mink-browserkit-driver": "*",
"behat/mink-selenium2-driver": "*",
"behat/symfony2-extension": "*",
答案 0 :(得分:2)
您遇到的是两个无关的问题。
你没有获得
的路线这一事实base_url: "http://web.dev/web/app_behat.php/"
非常明显:您的网络服务器将web/
目录视为文档根目录,即如果您的网站/目录包含foo.html等文件,则{{1}将返回此文件。因此,第二条http://example.com/foo.html
行是正确的。
(注意:与“简单”的Web应用程序不同,Symfony2隐藏了公共访问代码的主要部分,以防止直接执行库文件。只有base_url
的内容是公开的。)
缺少的表问题与此无关。不幸的是,我们不知道确切的错误消息,但通常,您需要更新Doctrine架构以创建表。这可以通过运行以下命令之一来完成:
web/
第一个生成SQL命令,您可以自己将其复制/粘贴到SQL shell,后者将更新直接应用于数据库。