ruby-on-rails – 测试操作时如何在flash中放一个值

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 测试操作时如何在flash中放一个值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图测试一个需要存储在flash中的值的动作.
def my_action
  if flash[:something].nil?
    redirect_to root_path if flash[:something]
    return
  end

  # Do some other stuff
end

在我的测试中,我做的事情就像:

before(:each) do
  flash[:something] = "bob"
end

it "should do whatever I had commented out above" do
  get :my_action
  # Assert something
end

我遇到的问题是,flash中没有my_action内的值.我猜这是因为没有请求实际上发生.

有没有办法设置闪光灯这样的测试?

解决方法

问题是,使用flash哈希的方式,这意味着它只能用于下一个请求.为了将flash哈希值设置为测试值,您可以这样写:
def test_something_keeps_flash
  @request.flash[:something] = 'bar'
  xhr :get,:my_action
  assert_response :success
  // Assert page contents here
end

这确保您可以检查您的操作的逻辑.因为现在将正确设置闪存散列,请输入您的my_action并对闪存哈希进行检查.

原文链接:https://www.f2er.com/ruby/267079.html

猜你在找的Ruby相关文章