2014-09-03 126 views
0

我访问我的页面在http://web.dev/web/app_behat.php,它工作时,我在浏览器中手动。Behat base_url问题或sqlite数据库

所以我设置

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/)< - 为督促

http://web.dev/web/app_dev.php/ < - 用于开发

http://web.dev/web/app_behat.php/ < - 为贝哈特

所有这些工作,因为当我用它们手动在铬或其他浏览器

这就是为什么我很奇怪为什么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不读我的实体映射和问题的查询,以创建数据库架构,这两个数据库文件都有读/写权限(为了测试我给他们777)

我刚刚意识到的另一件事,所有这些错误都被写入test.log文件而不是behat.log。我创建内核与$kernel = new AppKernel('behat', true);

也许我只是大大误解了应该怎么工作?

EDIT2:

我注意到,没有贝哈特功能运行要么我是来自作曲家使用路径

版本时,Apache的访问日志生成条目。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":  "*", 
+1

问问自己:这个问题应该由谁从未见过你的代码,只是有这个*问题描述*? (您可能注意到,也可能没有注意到'web.dev'在互联网上不可用) – hek2mgl 2014-09-05 14:34:33

+0

我不知道为什么我有这个问题,现在不在哪里寻找解决方法。所以告诉我我的代码的哪一部分你需要看,我会发布它。 app_behat.php是symfony标准版中app_dev.php的副本,在必要时用dev替换为dev。正如我所说的,当我手动浏览它时,我的应用程序可以正常工作,并且它使用了behat或浏览器,只是在这里猜测。 – Gustek 2014-09-05 14:53:07

+1

你需要提供*所需的信息/代码来重现问题* – hek2mgl 2014-09-05 18:29:15

回答

2

你遇到的是两个不相关的问题。

,你没有得到与

base_url: "http://web.dev/web/app_behat.php/" 

的路线,这个事实很明显:web/目录由你的网络服务器,即作为文档根目录处理,如果你的web /目录将包含一个文件像foo.html,那么http://example.com/foo.html会返回这个文件。因此,第二行base_url是正确的。

(NB:不同于“简单”的Web应用程序,Symfony2中隐藏的公共访问的代码的主要部分,以防止库文件直接执行的web/只有内容是公开的)

缺少的表问题与此无关。不幸的是,我们并不知道确切的错误信息,但通常情况下,您需要更新Doctrine模式以创建表格。这可以通过运行这些命令之一来完成:

app/console doctrine:schema:update --dump-sql --complete 
app/console doctrine:schema:update --force --complete 

第一个产生,你可以复制粘贴/到SQL壳自己的SQL命令,后者直接将更新到数据库中。

+1

+1因为我仍然认为这是真正的问题,并且很难看出赏金如何迷路。 – coma 2014-09-13 12:52:58