我希望能够运行单个规范文件的测试 - 例如,对于我正在编辑的一个文件。
rake spec
执行所有规范。我的项目不是 Rails 项目,所以 rake spec:doc
不起作用。
不知道这是否重要,但这是我的目录结构。
./Rakefile ./lib ./lib/垫子.rb ./lib/垫子 ./lib/垫子/doc.rb ./lib/垫子/db.rb ./规格 ./spec/spec.opts ./spec/spec_helper.rb ./spec/db_spec.rb
或者您可以跳过 rake 并使用“rspec”命令:
bundle exec rspec path/to/spec/file.rb
就您而言,我认为只要您的 ./spec/db_spec.rb 文件包含适当的帮助程序,它应该可以正常工作。
如果您使用旧版本的 rspec,它是:
bundle exec spec path/to/spec/file.rb
原始调用:
rake 规范 SPEC=spec/controllers/sessions_controller_spec.rb \ SPEC_OPTS="-e \"应该使用 cookie 登录\""
现在弄清楚如何将其嵌入到您的编辑器中。
这个问题是一个老问题,但当搜索如何运行单个测试时,它会出现在 Google 的顶部。我不知道这是否是最近添加的,但要根据规范运行单个测试,您可以执行以下操作:
rspec path/to/spec:<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*示例测试用例的实际文本
-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)
示例:规格spec/runner_spec.rb -l 162
要运行所有的 rspec 文件:
rspec
注意:您必须位于项目的根目录中
运行one rspec 文件:
rspec 'path_to/spec.rb'
注意:将 'path_to/spec.rb' 替换为您的路径。引号可选。
要从一个文件运行 one rspec test:
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 规范spec/models/user_spec.rb
说明:
ruby
命令往往比 rake
命令更快
-I spec
表示“查找文件时包含‘spec’目录”
spec/models/user_spec.rb
是我们要运行的文件。
我在使这些示例中的任何一个正常工作时遇到困难,可能是因为帖子很旧并且命令已更改?
经过一番探索后,我发现这个有效:
rspec 规格/模型/user_spec.rb
这将仅运行单个文件并在终端中提供有用的输出。
斑点.vim
或者,看看自动测试。
在命令窗口中运行自动测试意味着每当您保存规范文件时都会执行它。此外,只要运行您指定的文件,它就会运行。
例如,如果您有一个名为 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
如果您想在特定控制器用户中运行所有规范。
rspec/spec/feaures/controller_name
Example: rspec/spec/features/todos
希望大家多多理解!
您可以在测试文件中运行特定行
rspec spec/models/model_spec.rb:47
tl;博士;
bundle exec rake spec:unit spec/unit/interesting_spec.rb
我想我已经迟到了,但我需要使用
rake
运行测试,而不是直接调用 spec
,因为项目中的类加载设计显然很糟糕。