捆绑 gem:rspec 说“未找到示例”

问题描述 投票:0回答:3

我正在将 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 的目录布局“正确”吗? (假设有官方布局)
  2. 为什么我的测试没有运行?当我执行
    bundle exec rspec spec/mylib/*
    时,
    spec/mylib/test_MYCLASS.rb
    中的测试会运行,而如果我执行
    bundle exec rspec spec/mylib/
    ,则表示未找到示例。

我看过类似的问题并用谷歌搜索,但没有一个能解决我的问题。

ruby rspec bundler
3个回答
56
投票

在同事的帮助下解决了。事实证明,规范文件必须以

_spec
后缀命名,并且
bundle exec rspec spec
可以工作。我之前用
test_
前缀命名规范文件。使用的是捆绑器 1.3.5 和 rspec 2.14.1


0
投票

另一个可能的问题是忘记

require 'rails_helper'
,这通常是您需要大多数测试支持库的地方,包括
require 'rspec/rails'


0
投票

spec 文件不仅需要以

_spec.rb
后缀命名,还需要位于名为
/spec
的目录中,并且需要从根目录调用
rspec

© www.soinside.com 2019 - 2024. All rights reserved.