使用Jasmine 2.0和Rails 3.2测试不同资产组的事实上的方法

时间:2014-11-14 14:26:03

标签: javascript ruby-on-rails jasmine

我们正在使用我们的Rails 3.2项目从Jasmine 1.3迁移到Jasmine 2.0。以前我们通过Jasminerice运行资产管道进行测试,该管道运行在开发Web服务器上。不理想,但它有效。

我们有相当广泛的Javascript代码库。有不同的JS文件集合在一起处理功能的孤立部分。使用Jasmine,我们喜欢测试这些功能,首先加载相关的JS文件集,然后执行测试。我们的常规代码库中的JS文件依赖项是使用我们的JS文件中的Sprockets指令进行管理的。

我们的问题是:为这些javascript文件集设置测试的事实上的方法是什么?

E.g。说我们设置了#fo; foobar"和" foobar spec"。在Jasmine 1.3中我们曾经做过以下事情:

foobar.js:

//= require foo
//= require bar
... more JS code... 

foobar_spec.js:

//= require foobar
... foobar specs...

jasmine.yml:

src_files:
  - assets/jquery.js
  - assets/...other generic libs...

这使我们foobar_spec只能加载相关的源文件。我们在专用的Jasmine 2.0网络服务器上看到的问题之一是,现在所有文件都链接到来自foobar_spec.js的Sprocket指令(例如foobar.jsfoo.js和{{1 } {}包含在bar.js文件中,这使调试foobar_spec.js成为一场噩梦。我们还没有办法解决这个问题,就像你在foobar_spec.js的Rails中一样。

Rails.application.config.assets.compress = true中的JS文件会单独加载,因此我们可以通过在jasmine.yml而非foobar.js中加入jasmine.yml来解决此问题,但我们应该加载我们的整个JS代码库,即使是最孤立的测试用例。而且:我们不想将JS文件的加载顺序(已经在Sprocket指令中编码)复制到foorbar_spec.js

必须有最好的做法。任何提示和技巧都非常受欢迎!

0 个答案:

没有答案