我正在使用Behat測試XML和JSON REST API。對於身份驗證,我使用Sentinel。現在,如果我通過Behat登錄用戶,並且測試登錄會話的狀態,則API返回否定響應(例如,用戶未登錄)。當我使用AJAX請求在瀏覽器中手動完成同樣的事情時,一切正常。所以最終結果是好的,但情況失敗。有關如何解決此問題的任何建議?使用Behat測試登錄會話
UPDATE:
我會更詳細一點的應用程序,這是基於Slim,Twig,Eloquent和Sentinel的設置。
API有一些創建,顯示(是或否)和刪除用戶會話的路由。因此,通過將電子郵件地址和密碼發送到/session.json
或/session.xml
來完成登錄用戶。在幕後,控制器基本上會撥打Sentinel::authenticate(...)
。
這一切都在瀏覽器中正常工作。如果我執行/session.json
的GET請求,我將看到用戶正確登錄。如果我遵循與Behat相同的步驟,我將在POST請求中獲得正確的返回值,所以Sentinel說用戶已登錄。但GET請求會告訴我用戶未登錄。
給你一個想法,在貝哈特場景看起來是這樣的:
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 |
| [email protected] | 32165487 | xml |
| [email protected] | 89056734 | json |
在上下文我使用Requests庫實際執行的請求。所以Behat是一個常客。
如果可能,請添加一些關於您如何進行身份驗證的代碼,以及您有哪些錯誤和您使用的驗證。可能有助於他人給你一個具體的答案,問題的實際格式不是很具體。 – lauda
我在設置上添加了更多信息。這是一個精簡版,但基本上就是它的功能。 – wout