ruby-on-rails - rspec 集成测试中的 session 对象

标签 ruby-on-rails integration-testing rspec2 capybara

我正在使用 rspec 和 capybara 进行集成测试。

他们是在请求规范中制作 session 对象的一种方法吗?

我有一个 View 页面,我在其中使用 session 对象检查其值以显示选择性内容。

面临的问题是我无法在请求规范中创建 session 对象。
这是 View 的示例:

<% if session[:role] == "Role" %>
---content---
<% else %>
--content--
<% end %>

在我的请求规范中
session[:role] = "Role"
visit my_path

但是它给我一个错误“未定义的方法`session' for nil:NilClass”。

我也尝试研究创建 capybara 的 session 对象。但找不到任何东西。

他们有什么解决方法吗?我找不到与此相关的任何内容,似乎不可能。真的很感激一点帮助。

最佳答案

您应该执行请求规范的方式是访问用户通常需要访问的任何 URL,以便设置该 session 变量。

除了手动设置 session cookie 之外,我不知道任何其他方式。 Capybara.current_session.driver.browser.set_cookie让我们这样做,但您必须手动创建 cookie 值。

关于ruby-on-rails - rspec 集成测试中的 session 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8726192/

相关文章:

ruby-on-rails - 在 simpleform 表单中手动设置表单输入字段的 ID?

ruby-on-rails - 有人找到了让 Heroku 与 Cloudflare Railgun 一起工作的方法吗?

ruby-on-rails - Rails ActiveRecord where 子句在本地与生产中使用 .first 与 .last

testing - Clojure - 集成测试组织

java - Spring Boot + Thymeleaf 的@WebAppConfiguration 和@ContextConfiguration

ruby-on-rails - 了解 MongoMappers 的多方面关系

java - 在启动预集成和后集成时分别运行单元测试和 IT 测试

ruby-on-rails - RSpec 列出所有挂起的例子

ruby-on-rails - 如何在 Rails 和 RSpec 中测试 after_destroy 回调?