Rails 5 个测试弃用警告
Rails 5 deprecation warning for tests
我正在尝试从 rails 4.2.6 更新到 rails 5.0.0.1,但在 运行 我的测试时收到以下警告:
DEPRECATION WARNING: ActionController::TestCase HTTP request methods
will accept only keyword arguments in future Rails versions.
Examples:
get :show, params: { id: 1 }, session: { user_id: 1 } process :update,
method: :post, params: { id: 1 } (called from block in
at /home/ubuntu/workspace/my_app/test/controllers/tractions_controller_test.rb:25)
我一直在进行适当的更改以适应这一变化。但是对于下面的集成测试行,我不知道如何正确更改它:
delete api_sessions_path, { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
因此测试通过但带有弃用警告。如果我将其更改为下面的两个选项,测试将因语法错误而失败。如何正确调线?
delete api_sessions_path, params: { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
delete api_sessions_path, params: { { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } }
Update:我也尝试过使用 session
和下面的选项,但会产生错误 ArgumentError: unknown keyword: session
.
delete api_sessions_path, session: { api_session: { org_id: nil } }, params: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
delete api_sessions_path, params: { api_session: { org_id: nil } }, session: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
delete api_sessions_path, params: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }, session: { api_session: { org_id: nil } }
delete api_sessions_path, session: { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
我找到了解决方案。必须添加 headers
标签:
delete api_sessions_path, params: { api_session: { org_id: nil } }, headers: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
我正在尝试从 rails 4.2.6 更新到 rails 5.0.0.1,但在 运行 我的测试时收到以下警告:
DEPRECATION WARNING: ActionController::TestCase HTTP request methods will accept only keyword arguments in future Rails versions.
Examples:
get :show, params: { id: 1 }, session: { user_id: 1 } process :update, method: :post, params: { id: 1 } (called from block in at /home/ubuntu/workspace/my_app/test/controllers/tractions_controller_test.rb:25)
我一直在进行适当的更改以适应这一变化。但是对于下面的集成测试行,我不知道如何正确更改它:
delete api_sessions_path, { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
因此测试通过但带有弃用警告。如果我将其更改为下面的两个选项,测试将因语法错误而失败。如何正确调线?
delete api_sessions_path, params: { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
delete api_sessions_path, params: { { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } }
Update:我也尝试过使用 session
和下面的选项,但会产生错误 ArgumentError: unknown keyword: session
.
delete api_sessions_path, session: { api_session: { org_id: nil } }, params: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
delete api_sessions_path, params: { api_session: { org_id: nil } }, session: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
delete api_sessions_path, params: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }, session: { api_session: { org_id: nil } }
delete api_sessions_path, session: { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }
我找到了解决方案。必须添加 headers
标签:
delete api_sessions_path, params: { api_session: { org_id: nil } }, headers: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }