Ruby on rails rspec测试对格式和csv的响应
我想测试我的rspec控制器中的top_用户eq User.top_用户。 如何访问format.csv?我需要像这样的东西:Ruby on rails rspec测试对格式和csv的响应,ruby-on-rails,ruby,csv,ruby-on-rails-4,rspec,Ruby On Rails,Ruby,Csv,Ruby On Rails 4,Rspec,我想测试我的rspec控制器中的top_用户eq User.top_用户。 如何访问format.csv?我需要像这样的东西: 它“格式化csv”吗 获取:索引,格式::csv #期待(某事)…… 结束 稍后要测试csv:if文件格式是否正确,而不保存/下载它 控制器: def索引 回应做什么|格式| format.csv do top\u用户=User.top\u用户 发送数据( 顶级用户到csv, 文件名:“顶级用户-#{Time.zone.today}.csv” ) 结束 结束 结束
它“格式化csv”吗
获取:索引,格式::csv
#期待(某事)……
结束
稍后要测试csv:if文件格式是否正确,而不保存/下载它
控制器:
def索引
回应做什么|格式|
format.csv do
top\u用户=User.top\u用户
发送数据(
顶级用户到csv,
文件名:“顶级用户-#{Time.zone.today}.csv”
)
结束
结束
结束
型号:
def self.to_csv
CSV.generate(标题:true)do | CSV|
csv不管是csv、PDF还是其他格式,都是关于从get请求中得到的csv格式的响应。
这是我测试csv生成器的方法:
describe "GET/index generate CSV" do
before :each do
get :index, format: :csv
end
it "generate CSV" do
expect(response.header['Content-Type']).to include 'text/csv'
expect(response.body).to include('what you expect the file to have')
end
end
就这样
对于您拥有的每个用户,您可以执行以下操作:
User.top_users.each do |user|
expect(response.body).to include(user.name) # or the attr you want to check if it's in the file
end
您还可以添加'pry'gem,将binding.pry放在expect之前,并查看响应以及哪些元素有助于您检查该方法是否如您所期望的那样正确工作。当您尝试此处显示的示例规范时发生了什么?好的,这不是完整的错误消息。。。请转到日志文件(log/test.log
)重新运行规范,然后找到其中的错误并向我们展示更多信息,好吗?一点:您是否直接从应用程序复制/粘贴了此代码?您是否注意到问题中的代码具有奇怪的字符串格式?这是因为在您复制/粘贴的代码中使用了奇怪的“特殊”引号。很可能ruby解释器发现这些引号很奇怪,例如它期望'
,而发现`
,并且认为字符串也没有正确关闭“
vs“
我复制了你的代码,它给了我->未定义的方法`request='request=?你在我的代码或你的代码中看到任何request方法了吗!