我有一个 Rails 生成器,我想制作它,除其他外,它将运行一些基于 yaml 文件的脚手架:
class MyGenerator < Rails::Generators::Base
...
def run_scaffolds
...
invoke 'scaffold', fields
...
end
end
我正在调用此处描述的脚手架生成器。
问题是如果我尝试在单元测试中运行它:
class ScaffoldTest < Rails::Generators::TestCase
tests MyGenerator
destination File.expand_path("../tmp", File.dirname(__FILE__))
setup :prepare_destination
test "run scaffolds" do
run_generator ["example_file.yaml"]
# doesn't get to here
end
end
我最终得到一个错误:
Errno::ENOENT: No such file or directory - .../tmp/config/routes.rb
这是因为 tmp 目录中没有 Rails 应用程序。我的问题是,如果没有 Rails 应用程序就无法执行这个生成器,我怎么可能测试它?当然,我不应该每次运行测试时都在 tmp 文件夹中创建一个新的 rails 应用程序吗?