如何测试发送文件的控制器操作?
如果我controller.should_receive(:send_file)
使用“缺少模板”进行测试失败,因为没有渲染任何内容。
如何测试发送文件的控制器操作?
如果我controller.should_receive(:send_file)
使用“缺少模板”进行测试失败,因为没有渲染任何内容。
另一种有效的方法是:
controller.should_receive(:send_file).and_return{controller.render :nothing => true}
对我来说,这抓住了这样一个事实,即预期的副作用send_file
是安排不渲染任何其他内容。(尽管,让存根调用原始对象上的方法似乎有点不靠谱。)
你也可以这样做:
result = get ....
result.body.should eq IO.binread(path_to_file)
这在 RSpec 控制器测试中对我很有用。我更喜欢不将其存根,而是调用原始文件,以便它确实返回文件,您甚至可以访问响应标头等...
expect(controller).to receive(:send_file).with(some_filepath, type: "image/jpg").and_call_original