我们正在使用我们的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.js
,foo.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
。
必须有最好的做法。任何提示和技巧都非常受欢迎!