我在修改别人的 Gem,想给一个类加一个方法
由于它的测试框架是 test/unit ,而且没有写 rake 命令,所以我也只能运行 ruby test/test_xxx.rb 来跑测试
test/unit
ruby test/test_xxx.rb
但是这个 Gem 我之前是用 bundler 装过的呀,所以单元测试文件里的 require 会默认从 ~/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/ 里找文件,而不是从项目目录里找,进而导致测试跳错说没有这个方法……
require
~/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/
动态的在那个类里加个方法不行么?
试试 ruby -Ilib test/test_xxx.rb
ruby -Ilib test/test_xxx.rb
#1 楼 @liprais 我修改了那个类的文件的代码,但除非我 gem build 然后 gem install,否则单元测试里 require 到的这个类就不会有我增加的方法
#2 楼 @Rei 啊,谢谢你!成功了!
$LOAD_PATH.unshift(File.dirname(__FILE__)) 开发环境中不可能每一步都要build和install. 所以,一般在测试代码中加入这行代码,或者在test_helper.rb中加入此代码。保证加载的内容是本地的而不是安装好的 gem.
$LOAD_PATH.unshift(File.dirname(__FILE__))
build
install
test_helper.rb
#5 楼 @suffering 嗯……经过 @Rei 的提示以后我才想到要去调整 Ruby 的加载路径列表……
非常谢谢你回答我!