测试在 Rails 中创建随后在 RSpec 中删除的文件
Testing the creation of files in Rails that are subsequently deleted in RSpec
我正在尝试找出如何测试 Rails 控制器在随后删除文件时创建的文件。
我有一个创建 CSV 文件的控制器,将它发送给用户,然后从服务器上删除它。它看起来像这样:
class WelcomeController < ApplicationController
def download_file
generate_file
send_data File.read(filename)
delete_file
end
private
def generate_file
# code that creates a file
end
def delete_file
File.delete(filename)
end
end
我的测试文件:
require "rails_helper"
RSpec.describe WelcomeController :type => :controller do
describe 'GET #download_file' do
it 'creates csv files' do
get :download_file
expect(File.file?(filename)).to be true # fails because file is deleted
end
end
end
我正在尝试测试 download_file
创建 csv 文件这一事实,但我似乎无法弄清楚如何告诉 Rails 我想要 delete_file
在我的测试环境中忽略的方法。
您可以通过Rails.env
获取当前环境
def download_file
generate_file
send_data File.read(filename)
delete_file unless Rails.env.test?
end
每个环境都有不同的行为通常是一个糟糕的设计。考虑改为测试 send_data
发送的数据(查看 this question 的示例)
我正在尝试找出如何测试 Rails 控制器在随后删除文件时创建的文件。
我有一个创建 CSV 文件的控制器,将它发送给用户,然后从服务器上删除它。它看起来像这样:
class WelcomeController < ApplicationController
def download_file
generate_file
send_data File.read(filename)
delete_file
end
private
def generate_file
# code that creates a file
end
def delete_file
File.delete(filename)
end
end
我的测试文件:
require "rails_helper"
RSpec.describe WelcomeController :type => :controller do
describe 'GET #download_file' do
it 'creates csv files' do
get :download_file
expect(File.file?(filename)).to be true # fails because file is deleted
end
end
end
我正在尝试测试 download_file
创建 csv 文件这一事实,但我似乎无法弄清楚如何告诉 Rails 我想要 delete_file
在我的测试环境中忽略的方法。
您可以通过Rails.env
获取当前环境
def download_file
generate_file
send_data File.read(filename)
delete_file unless Rails.env.test?
end
每个环境都有不同的行为通常是一个糟糕的设计。考虑改为测试 send_data
发送的数据(查看 this question 的示例)