我希望能够运行单个规范文件的测试—例如,对于我正在编辑的一个文件。Rake spec执行所有的规范。我的项目不是Rails项目,所以rake spec:doc不起作用。

不知道这是否重要,但这是我的目录结构。

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb

当前回答

虽然这个问题有很多很好的答案,但没有一个使用Rspec标记方法。

我使用标记在不同的文件中运行一个或多个规范——只运行与当前开发任务相关的规范。

例如,我添加了标签“dev”,值为“current”:

it "creates an user", dev: :current do
  user = create(:user)
  expect(user.persisted?).to be_truthy
end

然后我就跑

bundle exec rspec . --tag dev:current

可以在单个规格或组中设置不同的标签/值。

其他回答

您可以在测试文件中运行特定的行

rspec spec/models/model_spec.rb:47

或者,看看autotest。

在命令窗口中运行autotest意味着在保存规范文件时将执行它。而且,只要您指定的文件运行,它就会运行。

例如,如果您有一个名为person_spec的模型规范文件。Rb,和一个模型文件,它被指定为person。Rb,那么当您从编辑器中保存这些文件时,规范文件将被执行。

从帮助(spec -h):

-l, --line LINE_NUMBER           Execute example group or example at given line.
                                 (does not work for dynamically generated examples)

示例:spec spec/runner_spec。Rb -l 162

运行你所有的rspec文件:rspec

注意:你必须在项目的根目录下

运行一个rspec文件:rspec 'path_to/spec.rb'

注意:替换'path_to/spec。跟着你的路走。可选引号。

rspec 'path_to/spec.rb:7'

注意::7是测试开始的行号