Karma和RequireJS在基本URL之外获取文件

时间:2015-04-23 12:59:38

标签: javascript requirejs karma-runner karma-jasmine

我正在尝试使用业力配置自动测试。 我的文件结构如下

rightView

karma.conf.js:

/assests
/css
/font
/img
/js
    /collection
    /lib
    /model
    /plugin
    /spec
    /view
    test-main.js
    main.js
/templates
index.html
karma.conf.js

测试main.js:

module.exports = function(config) {
  config.set({
    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',
    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine', 'requirejs'],

    // list of files / patterns to load in the browser
    files: [
  'js/test-main.js',
      {pattern: 'js/*.js', included: false},
      {pattern: 'js/collection/*.js', included: false},
      {pattern: 'js/lib/**/*.js', included: false},
      {pattern: 'js/lib/**/**/*.js', included: false},
      {pattern: 'js/lib/**/**/**/*.js', included: false},
      {pattern: 'js/model/*.js', included: false},
      {pattern: 'js/model/**/*.js', included: false},
      {pattern: 'js/plugin/*.js', included: false},
      {pattern: 'js/plugin/**/*.js', included: false},
      {pattern: 'js/spec/*.js', included: false},
      {pattern: 'js/spec/**/*.js', included: false},
      {pattern: 'js/view/**/*.js', included: false},
      {pattern: 'js/view/*.js', included: false}
    ],


    // list of files to exclude
    exclude: [
      'js/main.js',
      'js/initScript.js',
      'js/SpecRunner.js'
    ],
    etc. . . 
}

加载所有js文件效果很好。目前的问题是我无法在基本路径之外加载任何资源。

因此,当我的测试尝试获取模板(位于'../template/下)时,karma无法找到这些模板并失败。

我无法更改我的基本路径,因为所有JS模块都在'js /'.

无论如何都要在基本路径之外加载资源吗?

1 个答案:

答案 0 :(得分:0)

正如你自己写的那样

 baseUrl: '../..',

因此,这意味着如果您希望能够访问比您需要移动所有网址更深的文件:

base/

你也可以使用,(?!(?:[^"]*"[^"]*")*[^"]*$) 作为karmaConf.js的基本路径将karma理解为

为了更好地理解karma.conf和test-main.js的basePath如何工作,你可以看一下:http://monicalent.com/blog/2015/02/11/karma-tests-angular-js-require-j/