gpt4 book ai didi

ruby-on-rails - 对调用另一个生成器的 Rails 生成器进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:47 25 4
gpt4 key购买 nike

我有一个 rails 生成器,我想制作它,除其他外,将运行一些基于 yaml 文件的脚手架:

class MyGenerator < Rails::Generators::Base
...
def run_scaffolds
...
invoke 'scaffold', fields
...
end
end

我正在按照描述调用脚手架生成器 here .

问题是如果我尝试在单元测试中运行它:

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 应用程序吗?

最佳答案

我决定使用 mocha 停止对生成器的调用:

Rails::Generator.stubs(:invoke)
run_generator ["example_file.yaml"]

我选择这个解决方案是因为它让我验证代码是否使用正确的参数调用生成器,并且不需要我在真实的 Rails 应用程序中实际运行生成器。

关于ruby-on-rails - 对调用另一个生成器的 Rails 生成器进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19698553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com