我从@danott那里看到了这篇有趣的文章(http://danott.co/posts/rails-javascript-testing-using-karma.html)关于 Rails使用Karma进行Javascript测试。
我自己用最新版本的业力测试了它,但我遇到了一个问题:
如果我在karma配置中设置singleRun = false,它不会重新加载从Rails应用程序的本地运行实例提供的application.js文件。
files: [
'http://myapp.dev/assets/application.js',
...
]
我希望每次更改某些代码时都自动运行测试,而不是将其设置为singleRun并自行触发测试。在执行新一轮测试之前,我可以以某种方式告诉业务重新加载application.js文件吗?
答案 0 :(得分: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 }
]
答案 1 :(得分:0)
让Karma通过HTTP获取application.js
会强制您运行开发环境并应用像@danott这样的监视模式。
如果您使用rake任务通过注入application.js
中所需的所有文件使Karma了解Sprockets,则您没有此约束。
在我的佣金任务中,我有这个:
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
。如果你想要全局,我写了tutorial。