我有一个Rails API,因此所有控制器都位于app/controllers/api/v1/
中,并且当我保存控制器文件时,测试文件不会运行。
例如,我在app/controllers/api/v1/images_controller.rb
中有一个文件spec/requests/api/v1/images_controller_spec.rb
和一个测试文件。
我要保存控制器文件,但测试文件无法运行,但是,当我保存测试文件时,测试文件将运行。
这是我的Guardfile
clearing :on
guard :rspec, cmd: 'bundle exec rspec' do
require 'guard/rspec/dsl'
dsl = Guard::RSpec::Dsl.new(self)
# Feel free to open issues for suggestions and improvements
# RSpec files
rspec = dsl.rspec
watch(rspec.spec_helper) { rspec.spec_dir }
watch(rspec.spec_support) { rspec.spec_dir }
watch(rspec.spec_files)
# Ruby files
ruby = dsl.ruby
dsl.watch_spec_files_for(ruby.lib_files)
# Rails files
rails = dsl.rails(view_extensions: %w[erb haml slim])
dsl.watch_spec_files_for(rails.app_files)
dsl.watch_spec_files_for(rails.views)
watch(rails.controllers) do |m|
[
rspec.spec.call("routing/#{m[1]}_routing"),
rspec.spec.call("controllers/#{m[1]}_controller"),
rspec.spec.call("acceptance/#{m[1]}")
]
end
# Rails config changes
watch(rails.spec_helper) { rspec.spec_dir }
watch(rails.routes) { "#{rspec.spec_dir}/routing" }
watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
end
感谢您的帮助,因为我不理解它是如何工作的。谢谢。
答案 0 :(得分:0)
我自己回答了这个问题。我将测试文件添加到spec/controllers/api/v1/
并保存了控制器文件,然后运行了测试,因此它告诉我我需要另一个规则
rspec.spec.call("requests/#{m[1]}_controller")
它有效。