我想在Require.js和AngularJS下用業力寫單元測試。我以https://github.com/tnajdek/angular-requirejs-seed爲起點。當我按原樣構建項目時,一切正常。Karma/Require.js找不到文件
Chrome 32.0.1700 (Windows 7): Executed 3 of 3 SUCCESS (0.317 secs/0.007 secs)
現在,我想引用不同版本的AngularJS腳本,而不是由bower加載。 (我們有一個生產目錄結構,我不能改變。)我在/ scripts/angular-test中有種子項目,我想引用不在bower目錄中的AngularJS文件,但是它在我們系統中的/ scripts /angular/angular-dev-1.2.8.js。
我想我需要做的就是修改karma.conf.js文件指向一個不同的根的第一件事:
module.exports = function(config) {
config.set({
basePath: '../..',
frameworks: ['jasmine', 'requirejs'],
files: [
{pattern: 'angular-test/app/js/*.js', included: false},
{pattern: 'angular-test/app/js/**/*.js', included: false},
{pattern: 'angular-test/test/unit.js', included: false},
{pattern: 'angular-test/test/unit/*.js', included: false},
{pattern: 'angular-test/test/unit/**/*.js', included: false},
{pattern: 'angular-test/bower_components/**/*.js', included: false},
// needs to be last http://karma-runner.github.io/0.10/plus/requirejs.html
'angular-test/test/main-test.js'
],
autoWatch: true,
LogLevel: config.LOG_DEBUG,
browsers: ['Chrome'],
junitReporter: {
outputFile: 'angular-test/test_out/unit.xml',
suite: 'unit'
}
});
};
我改變了所有的其他裁判有在角測試他們的路徑,例如在main-test.js文件中:
require.config({
paths: {
angular: '/base/angular-test/bower_components/angular/angular',
angularRoute: '/base/angular-test/bower_components/angular-route/angular-route',
angularMocks: '/base/angular-test/bower_components/angular-mocks/angular-mocks',
text: '/base/angular-test/bower_components/requirejs-text/text',
fixtures: '/base/angular-test/test/unit/fixtures'
},
baseUrl: '/base/angular-test/app/js',
...
一切仍然有效。請注意,在這一點上,我仍然使用angular-requirejs-seed中的所有相同文件。但是,瀏覽器中的URL確實發生了變化;而不是
http://localhost:9876/base/bower_components/angular/angular.js
引用angular.js現在
http://localhost:9876/base/angular-test/bower_components/angular/angular.js
到目前爲止好。現在,我想改變對angular.js的引用。所以,我在主test.js將其更改爲
angular: '/base/angular/angular-dev-1.2.8',
現在,再也找不到角 - 具體而言,瀏覽器嘗試打
http://localhost:9876/base/angular/angular-dev-1.2.8.js
正如人們所期望的,但它可以讓導致人緣錯誤404
ERROR: 'There is no timestamp for /base/angular/angular-dev-1.2.8.js!'
Chrome 32.0.1700 (Windows 7): Executed 0 of 0 SUCCESS (0 secs/0 secs)
Chrome 32.0.1700 (Windows 7) ERROR
Uncaught Error: Script error for: angular
http://requirejs.org/docs/errors.html#scripterror
at d:/Gary/AppData/Roaming/npm/node_modules/requirejs/require.js:141
Chrome 32.0.1700 (Windows 7): Executed 0 of 0 ERROR (0.254 secs/0 secs)
鑑於修改的參考,以「/base/angular-test/bower_components/angular/angular.js」的作品,我希望這也是工作,但它不」噸。我唯一能想到的是,由於某種原因,因果網站服務器限制只能訪問/ base/angular-test子樹,儘管我無法想象爲什麼會這樣。