如何在RSpec中运行单个testing/ spec文件?
例如,我希望能够运行一个spec文件的testing – 对于我正在编辑的一个文件。 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'命令:
rspec path/to/spec/file.rb
在你的情况下,我想只要你的./spec/db_spec.rb文件包含适当的帮手,它应该工作正常。
如果您使用的是旧版本的rspec,则是:
spec path/to/spec/file.rb
原始调用:
rake spec SPEC = spec / controllers / sessions_controller_spec.rb \ SPEC_OPTS =“ - e \”应该使用cookielogin“”
现在弄清楚如何将它embedded到你的编辑器中。
这个问题是旧的,但在search如何运行单个testing时,它显示在Google的顶部。 我不知道这是否是最近的新增function,但要运行一个testing,您可以执行以下操作:
rspec path/to/spec:<line number>
其中-line number-是包含部分testing的行号。 例如,如果你有一个像这样的规格:
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
* xampletesting用例的实际文本!
因此对于:
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 spec / runner_spec.rb -l 162
如果您将rspec安装为插件而不是gem,那么您将不会拥有spec
可执行文件。
无论如何,你所要做的就是使用ruby来运行这个文件。 rspec代码非常聪明,可以为您运行testing。
例如:
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有一个简单的方法来运行一个spec文件:
ruby -I spec spec / models / user_spec.rb
说明:
-
ruby
命令往往比rake
命令更快 -
-I spec
意思是“在查找文件时包含'spec'目录” -
spec/models/user_spec.rb
是我们想要运行的文件。
我无法得到任何这些例子的工作,也许是因为这个职位是旧的,命令已经改变?
经过一番摸索,我发现这个作品:
rspec spec / models / user_spec.rb
这将只运行单个文件,并在terminal中提供有用的输出。
specky.vim
或者,看看自动testing。
在命令窗口中运行自动testing意味着只要保存spec文件就会被执行。 而且,只要您正在运行的文件正在运行,它就会运行。
例如,如果您有一个名为person_spec.rb的模型规范文件和一个名为person.rb的模型文件,那么无论您何时从编辑器中保存这些文件,spec文件都将被执行。
比方说,你正在运行testing创build待办事项。 您始终可以使用文件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
希望它给你更多的理解!
尽pipe这个问题写了很多很好的答案,但是没有一个使用Rspec tags
方法。
我使用标签在不同的文件中运行一个或多个规格 – 只有那些与我目前的开发任务相关的规格。
例如,我添加了值“current”的标签“dev”:
it "creates an user", dev: :current do user = create(:user) expect(user.persisted?).to be_truthy end
然后我跑
bundle exec rspec . --tag dev:current
不同的标签/值可以在各个规格或组中进行设置。
运行你所有的rspec文件: rspec
注意:你必须在你的项目的根源
运行一个 rspec文件: rspec 'path_to/spec.rb'
注意:用你的pathreplace“path_to / spec.rb”。 引号可选。
从一个文件运行一个 rspec testing : rspec 'path_to/spec.rb:7'
注意::7是testing开始的行号