我的控制器中有以下代码导出csv文件
...
def export
@filename = 'users.csv'
@output_encoding = 'UTF-8'
@users = User.active_users #not the actual scope but this only returns active
respond_to do |format|
format.csv
end
end
...
我的规格中有以下内容
it "should only return active users"
get :export, :format => :csv
# i want to check that my mocked users_controller#export is only returning the active users and not the inactive ones
end
当我检查时, response.body
在此测试中为空。在浏览器中执行此操作时,如何在下载的规范中获取csv文件,以便检查结果?我试图想出这个问题,我已经碰了一下。
感谢您提供的任何帮助。
答案 0 :(得分:0)
检查是否正在创建CSV文件的测试如下,假设控制器操作位于'csv_create_path'
var obj = {a: 1, b: 2, c: 3};
for(key in obj){
delete obj[key];
}
console.log(obj);
// Output:
// {}
答案 1 :(得分:-1)
您可以指定支持CSV格式,但不支持内容应该是什么。你可以做到
respond_to do |format|
format.csv do
render text: File.read(@filename)
end
end
实际呈现该CSV文件。
如果您还有相同数据的普通HTML格式视图,则只需
respond_to do |format|
format.html
format.csv do
render text: File.read(@filename)
end
end
假设您之前已为HTML视图设置了适当的实例变量。