新手问题 测试 Gem 的时候如何让 require 'path/filename' 优先载入项目文件?

bolasblack · 2015年02月08日 · 最后由 bolasblack 回复于 2015年02月09日 · 1641 次阅读

我在修改别人的 Gem,想给一个类加一个方法

由于它的测试框架是 test/unit ,而且没有写 rake 命令,所以我也只能运行 ruby test/test_xxx.rb 来跑测试

但是这个 Gem 我之前是用 bundler 装过的呀,所以单元测试文件里的 require 会默认从 ~/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/ 里找文件,而不是从项目目录里找,进而导致测试跳错说没有这个方法……

动态的在那个类里加个方法不行么?

试试 ruby -Ilib test/test_xxx.rb

#1 楼 @liprais 我修改了那个类的文件的代码,但除非我 gem build 然后 gem install,否则单元测试里 require 到的这个类就不会有我增加的方法

#2 楼 @Rei 啊,谢谢你!成功了!

$LOAD_PATH.unshift(File.dirname(__FILE__)) 开发环境中不可能每一步都要buildinstall. 所以,一般在测试代码中加入这行代码,或者在test_helper.rb中加入此代码。保证加载的内容是本地的而不是安装好的 gem.

#5 楼 @suffering 嗯……经过 @Rei 的提示以后我才想到要去调整 Ruby 的加载路径列表……

非常谢谢你回答我!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号