我希望能够运行单个规范文件的测试——例如,对于我正在编辑的一个文件。 rake spec
执行所有规范。我的项目不是 Rails 项目,所以rake spec:doc
不起作用。
不知道这是否重要,但这是我的目录结构。
./耙文件 ./lib ./lib/cushion.rb ./lib/靠垫 ./lib/cushion/doc.rb ./lib/靠垫/db.rb ./规格 ./spec/spec.opts ./spec/spec_helper.rb ./spec/db_spec.rb
或者您可以跳过 rake 并使用“rspec”命令:
rspec path/to/spec/file.rb
在您的情况下,我认为只要您的 ./spec/db_spec.rb 文件包含适当的帮助程序,它就应该可以正常工作。
如果您使用的是旧版本的 rspec,它是:
spec path/to/spec/file.rb
原始调用:
耙规格 SPEC=spec/controllers/sessions_controller_spec.rb \ SPEC_OPTS="-e \"应该使用cookie登录\""
现在弄清楚如何将它嵌入到您的编辑器中。
这个问题是一个老问题,但在搜索如何运行单个测试时,它会出现在 Google 的顶部。我不知道它是否是最近添加的,但是要根据规范运行单个测试,您可以执行以下操作:
rspec path/to/spec:<line number>
其中 -line number- 是包含部分测试的行号。例如,如果您有如下规格:
1:
2: it "should be awesome" do
3: foo = 3
4: foo.should eq(3)
5: end
6:
假设它保存在 spec/models/foo_spec.rb 中。然后你会运行:
rspec spec/models/foo_spec.rb:2
它只会运行那个规范。事实上,这个数字可以是 2 到 5 之间的任何值。
希望这可以帮助!
您还可以将 *e*xample 测试用例的实际文本与-e
!
因此对于:
it "shows the plane arrival time"
您可以使用
rspec path/to/spec/file.rb -e 'shows the plane arrival time'
./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time'
这里不需要耙子。
来自帮助(spec -h):
-l, --line LINE_NUMBER Execute example group or example at given line.
(does not work for dynamically generated examples)
示例:规范规范/runner_spec.rb -l 162
要运行所有rspec 文件:rspec
注意:您必须位于项目的根目录中
运行一个rspec 文件:rspec 'path_to/spec.rb'
注意:将 'path_to/spec.rb' 替换为您的路径。引号可选。
从一个文件运行一个rspec测试:rspec 'path_to/spec.rb:7'
注意: :7 是测试开始的行号
如果您将 rspec 安装为插件而不是 gem,那么您将没有spec
可执行文件。
无论如何,您需要做的就是使用 ruby 运行该文件。rspec 代码足够聪明,可以为您运行测试。
例如:
ruby myclass_spec.rb
http://github.com/grosser/single_test可以让你做类似的事情。
rake spec:user #run spec/model/user_spec.rb (searches for user*_spec.rb)
rake test:users_c #run test/functional/users_controller_test.rb
rake spec:user:token #run the first spec in user_spec.rb that matches /token/
rake test:user:token #run all tests in user_test.rb that match /token/
rake test:last
rake spec:last
Ruby 1.9.2 和 Rails 3 有一种简单的方法来运行一个规范文件:
ruby -I 规范规范/模型/user_spec.rb
解释:
ruby
命令往往比rake
命令
快-I spec
表示“在查找文件时包含‘spec’目录”
spec/models/user_spec.rb
是我们要运行的文件。
我无法让这些示例中的任何一个工作,可能是因为帖子很旧并且命令已经改变?
经过一番摸索,我发现这是可行的:
rspec 规范/模型/user_spec.rb
这将只运行单个文件并在终端中提供有用的输出。
斑点.vim
尽管对这个问题写了很多很好的答案,但没有一个使用Rspectags
方法。
我使用标签在不同的文件中运行一个或多个规范——仅与我当前的开发任务相关的那些。
例如,我添加标签“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
可以在单个规范或组中设置不同的标签/值。
或者,看看自动测试。
在命令窗口中运行 autotest 意味着无论何时保存该规范文件都会执行。此外,只要您指定的文件运行,它就会运行。
例如,如果您有一个名为 person_spec.rb 的模型规范文件和一个名为 person.rb 的模型文件,那么无论何时您从编辑器中保存这些文件中的任何一个,都会执行该规范文件。
可以说,您正在运行测试以创建待办事项。您始终可以使用文件 crete_spec.rb 文件运行该特定的待办事项规范代码,如下所示。
rspec/spec/features/controller/spec_file_name.rb
Example:
Creating rspec spec/features/todos/create_spec.rb
Editing rspec spec/features/todos/edit_spec.rb
Deleting rspec spec/features/todos/destroy_spec.rb
如果您想一次性运行所有规格。
rspec
如果您想在特定控制器用户中运行所有规范,请使用 this。
rspec/spec/feaures/controller_name
Example: rspec/spec/features/todos
希望能给大家更多的理解!
你可以在你的测试文件中运行特定的行
rspec spec/models/model_spec.rb:47