ruby-on-rails - 使用 rspec(ruby 项目)编写文件验证规范
问题描述
这两个测试用例失败,
describe 'validations' do
it { should validate_presence_of :file }
it { should validate_presence_of :save_path }
end
这是我正在测试的课程,
class ConvertFileToPdf < Base
attr_accessor(
:file,
:save_path
)
validates_presence_of(
:file,
:save_path
)
def path
'/Convert/ConvertFileToPdf'
end
def save_path
@save_path ||= File.join(File.dirname(file), "#{File.basename(file, ".*")}.pdf")
end
def call_api
client.multipart_post(
path,
file_name: File.basename(file),
file: File.open(file, 'rb'),
) do |request|
download(request, save_path)
end
end
end
解决方案
在对 执行存在性检查时save_path
,将调用相应的读取器方法。在此期间,如果file
未填写有效值,则组合 fromFile.dirname
将失败。
您可能应该在您的save_path
方法中添加一个保护子句:
def save_path
return if file.nil?
@save_path ||= File.join(File.dirname(file), "#{File.basename(file, ".*")}.pdf")
end
推荐阅读
- jquery - Jquery val() 不返回正确的值,它返回一个截断的值
- php - 如何在 php 中合并 2 个对象并计算其最终数据?
- c# - Windows 临时文件删除服务
- mysql - Mysql Insert Ignore .. On duplicate key update 导致死锁
- ios - TabBarViewController 的导航栏覆盖来自导航控制器的导航栏
- javascript - 切换对话框在 jQuery 中不起作用。如何在按钮单击中显示动画对话框?
- javascript - Laravel 应用程序中未调用 Javascript 函数
- php - 在服务器中运行的 REST api 给出错误消息
- rust - 为什么 add_cart 抱怨错误?
- mongodb - 如何在 mongoose get 调用中包含 url 过滤器参数