RSpec中的相对文件路径
我对/lib/classes
的类进行了RSpec测试,需要访问zip文件(无上传)。 该文件存储在/spec/fixtures/files/test.zip
。 如何输入正确的路径以使其与环境无关,即没有绝对路径?
据我所知(从每个月或两个月开始),没有更好的方法可以在spec_helper
中构建一些使用__FILE__
值来获取已知内容的路径,然后在其上构建自己的帮助器。
显然,您也可以在单个*_spec.rb
文件中使用相对于__FILE__
的路径。
Rails.root
会给你应用程序root,所以
Rails.root.join "spec/fixtures/files/test.zip"
将为您提供文件的绝对路径,不知道应用程序在硬盘上的位置。
我最近解决了这个问题,这就是我想出的:
在指向RSpec root的spec_helper.rb
(或等效的)中定义一个常量:
RSPEC_ROOT = File.dirname __FILE__
在*_spec.rb
(或等效的)测试文件中使用此变量:
require 'spec_helper' File.open("#{RSPEC_ROOT}/resources/example_data.json")
为什么这个解决方
- 它没有使用可能会发生变化的测试文件的位置(spec_helper可能不会)
- 除了现有的
require 'spec_helper'
之外,它不需要添加任何测试文件 - 它不依赖于Rails(与
Rails.root
不同)
这是一个要点: https : //gist.github.com/thisismydesign/9dc142f89b82a07e413a45a5d2983b07
- Rails JSON API使用JSON中的PARAMS测试POST请求
- 在MacVim中使用rails.vim Rake运行规范,如何获得彩色输出
- Capybara 2.0和rspec-rails – 帮助程序在规范/function中不起作用
- Rails控制器中’env’和’request.env’有什么区别?
- Rails引擎在外键中出现问题
- Git:在推送到本地或远程主服务器之前强制执行测试
- 使用factory_girl进行RSpec测试,并使用will_paginate进行关联对象
- Ruby Debug“没有这样的文件加载–spec_helper”
- 在窗口中运行rspec时出错:找不到Webpack binstubs