捆绑宝石:rspec说'没有找到例子'

时间:2013-12-11 08:00:33

标签: ruby rspec bundler

我正在将rails项目中ruby的一部分移植到gem中。我使用bundle gem来创建新的gem目录。对于libspec目录,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的目录布局是否“正确”? (假设有官方布局)
  2. 为什么我的测试没有运行?当我执行bundle exec rspec spec/mylib/*时,spec/mylib/test_MYCLASS.rb中的测试会运行,而如果我执行bundle exec rspec spec/mylib/,则表示未找到任何示例。
  3. 我看过类似的问题并用Google搜索,但没有一个能解决我的问题。

2 个答案:

答案 0 :(得分:44)

在我的同事的帮助下解决了这个问题。事实证明,spec文件必须以_spec后缀命名,并且bundle exec rspec spec有效。我之前使用test_前缀命名spec文件。使用的是bundler 1.3.5和rspec 2.14.1

答案 1 :(得分:0)

另一个可能的问题是忘记Console.WriteLine("Down arrow");,这通常是您需要大多数测试支持库的地方,包括require 'rails_helper'