RSpec send_file测试

Mir*_*rko 29 rspec ruby-on-rails sendfile

如何测试发送文件的控制器操作?

如果我controller.should_receive(:send_file)使用"缺少模板" 进行测试失败,因为没有任何内容被渲染.

And*_*man 34

谷歌搜索 周围,似乎render也将在某个时候叫..但没有模板,将导致错误.

解决方案似乎也是为了解决问题:

controller.stub!(:render)
Run Code Online (Sandbox Code Playgroud)

  • 在Rspec 3中,它是`允许(控制器).接收(:render)` (3认同)

ron*_*nen 25

另一种方法是:

controller.should_receive(:send_file).and_return{controller.render :nothing => true}
Run Code Online (Sandbox Code Playgroud)

对我来说,这抓住了这样一个事实,即预期的副作用send_file是安排没有其他任何东西被渲染.(尽管如此,将存根调用原始对象上的方法似乎有点不可思议.)


小智 7

你也可以这样做:

result = get ....

result.body.should eq IO.binread(path_to_file)
Run Code Online (Sandbox Code Playgroud)