【发布时间】:2020-07-09 18:49:56
【问题描述】:
如何在功能测试中发送 cookie?如何测试以确保清除 cookie?
我在使用 TDD 为 Rails 应用程序构建模型方面取得了巨大成功,但在控制器测试方面遇到了障碍:我可以在测试中设置一次 cookie 值并读取它们,但我无法清除他们。那就是:
test "clears cookie" do
get :set_it, :stuff => {'key' => 'value'} # stuff to cookify
assert cookies['key'] == 'value' # works fine
get :clear_it # cookie doesn't get sent. How do I simulate this?
assert nil == cookies['key'], 'Cookie not cleared' # fails
end
rails 测试指南没有提到如何在测试中模拟 cookie 的发送,只是如何验证数据是否设置在服务器上。我知道我之前遇到过这样一种情况,即在发送响应之前,服务器上的 cookie 数据不会被更改。这就是这里发生的事情吗?我有点希望功能测试在“成为客户”方面做得更好。
这是一个广为人知的问题吗?人们只是放弃使用 JUnit 来做这种事情吗?我真的很想能够为我的全部或几乎全部 tdd 使用一个框架。
纯粹的绝望和猜测让我乐观地尝试了@response.cookies,但这也没有用。
【问题讨论】:
-
请注意,手动测试——将 cookie 打印到 *.html.erb 文件中——表明 cookie 确实被清除了。为什么这行不通?!!
标签: ruby-on-rails cookies tdd