0

我正在使用Behat测试 XML 和 JSON REST API 。对于身份验证,我使用Sentinel。现在,如果我通过 Behat 登录用户,并测试登录会话的状态,API 会返回否定响应(例如用户未登录)。当我使用 AJAX 请求在浏览器中手动执行完全相同的操作时,一切正常。所以最终结果很好,但场景失败了。关于如何克服这个问题的任何建议?

更新:

我将详细说明应用程序的设置,它基于SlimTwigEloquentSentinel

API 有一些路由来创建、显示(是或否)和删除用户会话。因此,登录用户是通过将电子邮件地址和密码发送到/session.jsonor来完成的/session.xml。在幕后,控制器基本上会调用Sentinel::authenticate(...).

这一切在浏览器中都可以正常工作。如果我对 执行 GET 请求/session.json,我将看到用户已正确登录。如果我对 Behat 执行相同的步骤,我将在 POST 请求中获得正确的返回值,因此 Sentinel 会说用户已登录。但 GET 请求会告诉我用户未登录。

为了给您一个想法,Behat 场景如下所示:

Scenario Outline: Logging in a user
  Given I have a user with "<email>" and "<password>"
  And I use the "<format>" format
  When I log in the user with "<email>" and "<password>"
  Then the "success" message should be "session.active"

  Examples:
    | email | password | format |
    | a@b.c | 32165487 | xml    |
    | c@b.a | 89056734 | json   |

在上下文中,我使用Requests库来实际执行请求。因此,Behat 充当了普通客户的角色。

4

0 回答 0