Behat FeatureContext 中的 Symfony2 TokenStorage 始终为空
Symfony2 TokenStorage is always empty in Behat FeatureContext
我已经使用 Symfony2Extension 设置了 Behat,以便开始测试应用程序。
设置 SF2Extension 后,我可以将 Symofny 服务注入我的 Behat 上下文:
contexts:
- My\AppBundle\Features\Security\Context\FeatureContext:
session: '@session'
tokenStorage: '@security.token_storage'
FeatureContext 的构造函数:
public function __construct(Session $session, TokenStorage $tokenStorage)
现在我无法克服的问题是 tests/scenarios 执行时 $tokenStorage
始终为空(它们在普通浏览器中使用 Selenium 执行)。我的场景有一个用户成功登录到 SF2 应用程序,因此存在一个令牌和一个非空的 TokenStorage。
虽然 $tokenStorage
对象被注入到 Context 中,但它似乎与当前的实际应用程序无关 运行 - 它始终是空的。
非常感谢您的建议。谢谢
Behat 注入到您上下文中的服务与您的应用程序使用的服务不同。 Behat 启动它自己的 Symfony 服务容器实例。由于您尚未在 Behat 上下文中执行身份验证过程,因此未创建身份验证令牌。
由于您使用的是 selenium 驱动程序,因此您并没有真正使用 Symfony 扩展来发出请求,并且您无法访问该应用程序,只能通过其 UI (html) .
即使您使用 Symfony2Extension 发出请求(通过配置 symfony2 驱动程序),它也会在每次请求时启动一个新的容器实例。您可以做的是访问 Symfony 分析器,它可能会为您提供一些您需要的信息。
我已经使用 Symfony2Extension 设置了 Behat,以便开始测试应用程序。
设置 SF2Extension 后,我可以将 Symofny 服务注入我的 Behat 上下文:
contexts:
- My\AppBundle\Features\Security\Context\FeatureContext:
session: '@session'
tokenStorage: '@security.token_storage'
FeatureContext 的构造函数:
public function __construct(Session $session, TokenStorage $tokenStorage)
现在我无法克服的问题是 tests/scenarios 执行时 $tokenStorage
始终为空(它们在普通浏览器中使用 Selenium 执行)。我的场景有一个用户成功登录到 SF2 应用程序,因此存在一个令牌和一个非空的 TokenStorage。
虽然 $tokenStorage
对象被注入到 Context 中,但它似乎与当前的实际应用程序无关 运行 - 它始终是空的。
非常感谢您的建议。谢谢
Behat 注入到您上下文中的服务与您的应用程序使用的服务不同。 Behat 启动它自己的 Symfony 服务容器实例。由于您尚未在 Behat 上下文中执行身份验证过程,因此未创建身份验证令牌。
由于您使用的是 selenium 驱动程序,因此您并没有真正使用 Symfony 扩展来发出请求,并且您无法访问该应用程序,只能通过其 UI (html) .
即使您使用 Symfony2Extension 发出请求(通过配置 symfony2 驱动程序),它也会在每次请求时启动一个新的容器实例。您可以做的是访问 Symfony 分析器,它可能会为您提供一些您需要的信息。