用于测试邮件的Behat / Mink上的Symfony2分析器

时间:2013-12-26 09:50:40

标签: php symfony behat mink

我正在尝试使用Behat在我的Symfony2应用上测试我的邮件,请按照此文档http://docs.behat.org/cookbook/using_the_profiler_with_minkbundle.html

我认为该文档不是最新的,我被卡住了。

我按照所有步骤进行了这个场景:

@mink:symfony2
Scenario: Registration Success
  ...
  And I should get an email on "me@myproject.com" with:
  """
  To finish validating your account - please visit
  """

但是我收到以下错误:

You need to tag the scenario with "@mink:symfony". Using the profiler is not supported by Behat\Symfony2Extension\Driver\KernelDriver

如果我使用@mink:symfony代替@mink:symfony2,我会:

 [InvalidArgumentException]            
  Session "symfony" is not registered.  

behat.yml

default:
   context:
     class:  MyProject\BehatBundle\Features\Context\FeatureContext
   extensions:
       Behat\Symfony2Extension\Extension:
       mink_driver: true
       kernel:
          env: test
          debug: true
          bundle: MyProjectBehatBundle
       Behat\MinkExtension\Extension:
          base_url: 'http://myproject.local/app_test.php/'
          goutte: ~
          default_session: symfony2

我错过了什么?

4 个答案:

答案 0 :(得分:1)

  

但是我收到以下错误:

     

You need to tag the scenario with "@mink:symfony". Using the profiler is not supported by Behat\Symfony2Extension\Driver\KernelDriver

此错误是由您从文档(http://docs.behat.org/en/v2.5/cookbook/using_the_profiler_with_minkbundle.html)复制的自己的方法getSymfonyProfile()引起的,但您忘记了' 2'在例外消息中。

因此,您必须在开始时编写@mink:symfony2而不是@mink:symfony(并更正您的异常消息)。

然后我认为你应该:

  1. 确保您拥有允许您使用Behat访问Symfony2探查器的"behat/mink-browserkit-driver" MinkBrowserKitDriver )。

  2. 然后,在behat.yml配置文件中,default_session密钥必须引用现有会话,这意味着您必须声明Mink会话,如下所示:

    extensions:
        ...
        Behat\MinkExtension:
            base_url: 'http://localhost:8000/app_test.php/'
            sessions: # Sessions here
                symfony2:                     # <-- HERE: Define the "symfony2" session KEY so you can write "@mink:symfony2"
                    symfony2: ~               # Then call BrowserKitDriver here
    
            goutte: ~                         # Your GoutteDriver
            selenium2: ~                      # Your Selenium2Driver
            default_session: symfony2         # symfony2|goutte
            javascript_session: selenium2     # For @javascript tags
    
  3. 最后,如前所述,您可以使用方案调用@mink:symfony2。 现在应该可以了。

  4. 我很抱歉,因为我知道这是一个非常古老的主题,但也许这将有助于将来。

答案 1 :(得分:0)

要测试您可以使用MailCatcher的电子邮件,此工具会运行一个SMTP服务器,该服务器会捕获发送给它的任何邮件,以便在网络界面中显示。

看看here

答案 2 :(得分:0)

YAML文件对空间敏感。你忘了为behat扩展名放置空格:

default:
  context:
    class:  MyProject\BehatBundle\Features\Context\FeatureContext
  extensions:
    Behat\Symfony2Extension\Extension:
      mink_driver: true
      kernel:
        env: test
        debug: true
      bundle: MyProjectBehatBundle
    Behat\MinkExtension\Extension:
      base_url: 'http://myproject.local/app_test.php/'
      goutte: ~
      default_session: symfony2

答案 3 :(得分:0)

您的驱动程序是Behat\Symfony2Extension\Driver\KernelDriver的实例(根据错误),这是正确的。如果您从所引用的链接中复制了代码,那么您的驱动程序检查失败instanceof KernelDriver,那么唯一的解释就是您错过了

use Behat\Symfony2Extension\Driver\KernelDriver;

来自您的上下文文件。

@mink:symfony2一直是正确的标记for a long time,但我想在您复制文档时,文档中的代码段已经过时了。无论如何,这是一个红鲱鱼。