gpt4 book ai didi

ruby-on-rails - 使用 Rspec 测试 Rails 3.1 可安装引擎

转载 作者:行者123 更新时间:2023-12-03 07:38:27 25 4
gpt4 key购买 nike

我开始制作 Rails 3.1 引擎,但我很难使用 rspec 对其进行测试。

首先,如果我运行 rails gintegration_testwhatever 它会在测试/集成而不是规范/请求中创建常规集成测试(rspec-rails gem 已安装并需要作为开发依赖项在 gemspec 文件中)

此外,当我运行规范测试时,我收到一条错误消息,指出尚未创建与我正在测试的模型对应的表。我尝试了 rake engine_name:install:migrations 并从虚拟应用程序内部运行 rake db:migrate ,但出现“表已存在”错误。

一切似乎都脱节了,我觉得我在这里缺少一些东西来使 rspec gem 无缝工作,就像它通常在完整的 Rails 应用程序中所做的那样。

我从这里跟踪了所有更改http://rubyx.com/2011/03/01/start-your-engines我可以通过控制台启动虚拟应用程序来手动测试引擎,如下所示 http://railscasts.com/episodes/277-mountable-engines

有没有办法让 rspec 成为测试 Rails 3.1 引擎的默认值?

最佳答案

我将 RSpec 与 Rails 引擎一起使用,没有出现任何问题。

我使用以下开关创建了我的插件:-T --full --dummy-path=spec/dummy。

  • -T 排除测试/单元
  • --full 表示该插件是一个引擎
  • --dummy-path 只是为了让我们得不到测试目录(默认为测试/虚拟)。

从那里我使用了“启动你的引擎”文章中的spec_helper:

# Configure Rails Envinronment
ENV["RAILS_ENV"] = "test"
require File.expand_path("../dummy/config/environment.rb", __FILE__)

require 'rspec/rails'

ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[File.join(ENGINE_RAILS_ROOT, "spec/support/**/*.rb")].each {|f| require f }

RSpec.configure do |config|
config.use_transactional_fixtures = true
end

对于发电机。我将 config.generators block 添加到我的 engine.rb 文件中,如下所示:

module MyEngine
class Engine < Rails::Engine
config.generators do |g|
g.test_framework :rspec, :view_specs => false
end
end
end

这样,我就可以在运行模型生成器等生成器时获得 rspec 测试。

对于数据库,您的database.yml文件设置正确吗?您是否加载了测试环境,例如rake db:test:clone 还是 rake db:migrate RAILS_ENV=test?我的猜测是 RSpec 无法看到您的表,因为没有设置测试数据库。

关于ruby-on-rails - 使用 Rspec 测试 Rails 3.1 可安装引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7452037/

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