我对我的(当前)非常简单的站点进行了一些 Jasmine 测试,该站点由 Rails 后端和 AngularJS 前端组成。我正在尝试做一些 Jasmine 端到端测试,但包含 angular-scenario.js 会使我的测试无法运行。这不会让他们失败。这使他们根本无法启动。
我使用的是 1.0.7 版本,所有 Angular 文件都来自同一个版本(并且都来自 Angular 官方网站。我使用的 Rails 版本是 3.1.3 和 Ruby 1.9.3。我也是使用 jasmine gem 版本 1.3.2 和 jasmine-rails 0.4.5。
规范/javascripts/support/jasmine.yml:
src_files:
- assets/application.{js,coffee}
stylesheets:
- stylesheets/**/*.css
helpers:
- helpers/**/*.{js,coffee}
- lib/angular-scenario.js
spec_files:
- '**/*[sS]pec.{js,coffee}'
src_dir: 'app/assets/javascripts'
spec_dir: spec/javascripts
规范/javascripts/spec_helper.coffee:
#= require angular.min
#= require angular-mocks
规格/javascripts/模板/品牌/index_spec.coffee:
describe 'test', () ->
it 'works', () ->
expect(true).toEqual(true)
当然,这只是一个占位符,直到我可以使用 angular-scenario.js 正确地进行测试。
如果没有 angular-scenario.js,测试就会运行。有了它,什么都没有。
为了测试,我通常运行 RAILS_ENV=test rake spec:javascript,但我也尝试过从 Web 服务器界面。
没有 angular-secnario.js 的输出:
Starting...
Finished
-----------------
1 spec, 0 failures in 0.005s.
ConsoleReporter finished
angular-scenario.js 的输出:
Starting...
Finished
-----------------
0 specs, 0 failures in 0s.
ConsoleReporter finished
我尝试过的事情:
- 将 angular-scenario.js 移动到 vendor/assets/javacripts 并从 spec_helper.coffee 中要求它。
- 从 spec_helper.coffee 中删除任何其他与 Angular 相关的要求。
- angular-scenario.js 附带了 jQuery。奇怪的是,注释掉 jQuery 位会使测试运行,尽管它们失败了,因为 angular-scenario 显然需要 jQuery。我还尝试在 angular-scenario 中注释掉 jQuery,并从 jquery-rails gem 中包含 jQuery。(那是在黑暗中拍摄的。我认为这实际上行不通。)
非常感谢任何想要尝试这个的人。