如何在Rails 4中写入流时使用Rspec和ActionController :: Live进行测试?

eri*_*aio 6 ruby rspec ruby-on-rails-4

我目前正在尝试使用ActionController :: Live,我无法弄清楚如何正确测试它.

在我的控制器中,我写了这个

       response.stream.write("event: #{event}\n")
       response.stream.write("data: #{post.to_json}\n\n")
Run Code Online (Sandbox Code Playgroud)

但是当我在我的rspec测试中检查对象时,我看到了这一点

       (rdb:1) response.stream.instance_variable_get(:@buf)
       ["event: event\n"]
Run Code Online (Sandbox Code Playgroud)

当我将"数据"写入流时,我无法弄清楚为什么它不会出现在数组中.当我删除第一个response.stream.write行时,buf返回一个空数组.

eri*_*aio 3

弄清楚了问题。在stream.write中调用to_json不会将流添加到buf实例变量中。所以我删除了 to_json 并强制返回值,现在我可以确保流正确写入