1

我从@danott看到了这篇有趣的文章(http://danott.co/posts/rails-javascript-testing-using-karma.html ),关于使用 Karma 进行 Rails Javascript 测试

我自己使用最新版本的 karma 对其进行了测试,但遇到了一个问题:

如果我在 karma 配置中设置 singleRun = false,它不会重新加载从 Rails 应用程序的本地运行实例提供的 application.js 文件。

files: [
    'http://myapp.dev/assets/application.js',
    ...
]

我希望每次更改某些代码时都自动运行测试,而不是将其设置为 singleRun 并自行触发测试。在执行新一轮测试之前,我可以以某种方式告诉 karma 重新加载 application.js 文件吗?

4

2 回答 2

0

假设一个 Rail 的堆栈,您应该设置一个文件模式来监视您的资产文件夹,但不能不将这些文件包含或提供到您的测试中。

// spec/karma/config/unit.js
files = [
  JASMINE,
  JASMINE_ADAPTER,
  'http://rails.dev/assets/application.js',
  'spec/javascripts/*.js',
  { pattern: 'app/assets/javascripts/*.js', // <-- this is the bit that's important
    watched: true,
    included: false,
    served: false }
]
于 2013-11-13T18:10:32.460 回答
0

让 Karma 获取application.jsover HTTP 会迫使您运行开发环境并应用 @danott 建议的监视模式。

如果您使用 rake 任务通过注入您的application.js.

在我的 rake 任务中,我有这个:

sprockets = Rails.application.assets
sprockets.append_path Rails.root.join("spec/karma")
files = Rails.application.assets.find_asset("application_spec.js").to_a.map {|e| e.pathname.to_s }

连同我的业力配置文件:

files: [
  APPLICATION_SPEC,
  'app/assets/javascripts/angular/*/*.{coffee,js}',
  'spec/javascripts/**/*_spec.{coffee,js}'
]

APPLICATION_SPEC用所有链轮替换的地方files。如果你想要大图,我写了一个教程。

于 2014-02-05T07:27:37.003 回答