加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

rspec2 – Rails 3.1 RC5使用Spork进行可安装的发动机测试

发布时间:2020-12-17 02:11:53 所属栏目:百科 来源:网络整理
导读:我已经能够使用RSpec,Cucumber和Autotest来对抗我的Rails 3.1可安装引擎.事情陷入困境的是试图将Spork融入其中. Spork运行正常,我的测试使用Spork,但我遇到的问题是Spork不会重新加载模型,除非我关闭Spork服务器并不是非常有效.我也在使用factory_girl.我用
我已经能够使用RSpec,Cucumber和Autotest来对抗我的Rails 3.1可安装引擎.事情陷入困境的是试图将Spork融入其中. Spork运行正常,我的测试使用Spork,但我遇到的问题是Spork不会重新加载模型,除非我关闭Spork服务器并不是非常有效.我也在使用factory_girl.我用 Spork.trap_method尝试了各种各样的东西,但没有任何效果.

这是我正在使用的宝石(虽然我已经在我的项目中抛弃了Spork,因为它引起了我的悲痛):

> rails(3.1.0.rc5)
> spork(0.9.0.rc9)
> rspec(2.6.0)
> rspec-core(2.6.4)
> rspec-expectations(2.6.0)
> rspec-mocks(2.6.0)
> rspec-rails(2.6.1)
> factory_girl(2.0.3)
> factory_girl_rails(1.1.0)
>黄瓜(1.0.2)
>黄瓜栏杆(1.0.2)

谢谢,

-Damien

解决方法

我想出了我的问题.它实际上是自动测试,而不是Spork.我已经从可安装的引擎转移到标准引擎(插件),因为它最终更适合我需要的东西.

我现在正在使用Rails 3.1的发布版本.

在这种情况下,我认为事情会更容易,但我遇到了同样的问题.无论如何,这最终成为测试非命名空间引擎(可安装)的修复程序,虽然有一些路径调整,但我相信它会起作用.

使用以下内容将.autotest文件添加到项目的根目录:

Autotest.add_hook :initialize do |at|
  at.add_mapping %r%^app/models/(.*).rb$% do |_,m|
    "spec/models/#{m[1]}_spec.rb"
  end

  at.add_mapping %r%^app/controllers/(.*).rb$% do |_,m|
    ["spec/controllers/#{m[1]}_spec.rb","spec/functional/#{m[1]}_spec.rb"]
  end

  at.add_mapping %r%^app/helpers/(.*)_helper.rb% do |_,m|
    ["spec/views/#{m[1]}_view_spec.rb","spec/functional/#{m[1]}_controller_spec.rb"]
  end

  at.add_mapping %r%^app/views/(.*)/% do |_,"spec/functional/#{m[1]}_controller_spec.rb"]
  end
end

当我在另一个问题上遇到这个答案时,我提出了解决方案:how to tell autotest to correctly track changes in app source?,以及在网络上找到的其他示例.

希望这有助于其他人.

[编辑2011-09-20]
通过“黑客”修复了黄瓜/ Spork的问题.在Spork.each_run块中,我强制重新加载模型和控制器,如下所示:

ENGINE_ROOT=File.join(File.dirname(__FILE__),'../../')
  # Couldn't get spork to reload models,hence the reason for this hack
  Dir[File.join(ENGINE_ROOT,"app/models/*.rb")].each {|f| load f }
  # or controllers...
  Dir[File.join(ENGINE_ROOT,"app/controllers/*.rb")].each {|f| load f }

似乎应该有更好的方法……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读