0

我对我的(当前)非常简单的站点进行了一些 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。(那是在黑暗中拍摄的。我认为这实际上行不通。)

非常感谢任何想要尝试这个的人。

4

1 回答 1

2

Jasmine 和 angular-scenario.js (e2e runner) 是两个不同的东西,它们应该分开运行。Angular e2e 测试框架使用与 jasmine 非常相似的语法。可能当您将它与 jasmine 一起包含时,它会覆盖一些 jasmine 的方法,例如describe,itbeforeEach.

于 2013-08-21T09:04:04.903 回答