我正在将ruby on rails项目的一部分移植到gem中。我已经使用bundle gem
创建了新的gem目录。对于lib
和spec
目录,gem的项目布局如下所示:
|- lib
| |- mylib
| | |- MYCLASS.rb
| | |- version.rb
| |
| |- mylib.rb
|
|- spec
|- spec_helper.rb
|- mylib
|- test_MYCLASS.rb
字符串spec/spec_helper.rb
的内容:
require "mylib"
RSpec.configure do |config|
end
型mylib.gemspec
的相关部分,由bundle gem
命令生成:
spec.files = `git ls-files`.split($/)
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ["lib"]
型
当我运行bundle exec rspec spec
时,
No examples found.
Finished in 0.00004 seconds
0 examples, 0 failures
型
两个问题。
1.这个gem的目录布局是“正确的”吗?(假设有一个官方的布局)
1.为什么我的测试没有运行?当我执行bundle exec rspec spec/mylib/*
时,spec/mylib/test_MYCLASS.rb
中的测试运行,而如果我执行bundle exec rspec spec/mylib/
,它说没有找到示例。
我看过类似的问题,也在谷歌上搜索过,但没有一个能解决我的问题。
3条答案
按热度按时间wvt8vs2t1#
在我同事的帮助下解决了这个问题。原来spec文件必须用
_spec
后缀命名,bundle exec rspec spec
可以工作。我以前用test_
前缀命名spec文件。使用的是spec 1.3.5和rspec 2.14.1cqoc49vn2#
另一个可能的问题是忘记了
require 'rails_helper'
,这通常是你需要大多数测试支持库的地方,包括require 'rspec/rails'
。qv7cva1a3#
spec文件不仅需要使用
_spec.rb
后缀命名,还需要位于名为/spec
的目录中,并且需要从根目录调用rspec
。