简体   繁体   English

Karma找不到配置文件中指定的文件

[英]Karma doesn't find files specified in config file

I'm writing Jasmine tests to my Angularjs app. 我正在为我的Angularjs应用程序编写Jasmine测试。 I generated karma.conf.js using karma init but when I run karma start i get warnings like this: 我使用karma init生成了karma.conf.js,但是当我运行karma start时,我得到这样的警告:

WARN [web-server]: 404: /bower_components/angular/angular.js
WARN [web-server]: 404: /js/app.js

karma.conf.js is in my app folder, which is the place for the bower_components folder as well. karma.conf.js在我的app文件夹中,也就是bower_components文件夹的位置。

I think maybe that could be because of my local test server where I'm using this approach: https://github.com/mhevery/angular-node-socketio 我想也许可能是因为我使用这种方法的本地测试服务器: https//github.com/mhevery/angular-node-socketio

(I've been able to set up the tests like this in other project without a test server) (我已经能够在没有测试服务器的其他项目中设置这样的测试)

Can anybody please point me in the right direction here? 请问有谁可以指出我正确的方向吗?


Update: 更新:

My karma.conf.js looks like this: 我的karma.conf.js看起来像这样:

module.exports = function(config) {
  config.set({
    basePath: '.',
    frameworks: ['jasmine', 'requirejs'],
    files: [
      'tests/*.js',
      'js/*.js',
      'bower_components/angular/angular.js',
      'bower_components/angular-mocks/angular-mocks.js',
      'bower_components/angular-resource/angular-resource.js',
      'bower_components/d3/d3.js'
    ],
    exclude: [],
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    captureTimeout: 60000,
    singleRun: false
  });
};

Here's my directory structure: 这是我的目录结构:

在此输入图像描述

Now that you've fixed the basepath (from '.' to '', see question comments above), you should change the order of files loading in your karma.conf.js : 现在您已经修复了基本路径(从'。'到'',请参阅上面的问题评论),您应该更改karma.conf.js中加载的文件的顺序:

module.exports = function(config) {
  config.set({
    basePath: '.',
    frameworks: ['jasmine', 'requirejs'],
    files: [
      //load angular.js first
      //(unless if you use jQuery which must be first if I remember well)
      'bower_components/angular/angular.js',
      //Then angular-modules
      'bower_components/angular-resource/angular-resource.js',
      'bower_components/angular-mocks/angular-mocks.js',
      //Other libs
      'bower_components/d3/d3.js',
      //Your app scripts
      'js/*.js',
      //And your specs 
      'tests/*.js'
    ],
    exclude: [],
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    captureTimeout: 60000,
    singleRun: false
  });
};

You can find more info here: http://karma-runner.github.io/0.10/config/files.html 您可以在此处找到更多信息: http//karma-runner.github.io/0.10/config/files.html

Ordering 订购

  1. The order of patterns determines the order of files in which they are included in the browser. 模式的顺序决定了它们包含在浏览器中的文件的顺序。
  2. Multiple files matching a single pattern are sorted alphabetically. 匹配单个模式的多个文件按字母顺序排序。
  3. Each file is included exactly once. 每个文件只包含一次。 If multiple patterns match the same file, it's included as if it only matched the first pattern. 如果多个模式匹配同一个文件,则将其包含在内,就像它只匹配第一个模式一样。

Your problem is probably the order you're loading your files in. 您的问题可能是您正在加载文件的顺序。

You may need to change the order to something like: 您可能需要将订单更改为:

files: [
  'bower_components/angular/angular.js',
  'bower_components/angular-mocks/angular-mocks.js',
  'bower_components/angular-resource/angular-resource.js',
  'bower_components/d3/d3.js',
  'js/*.js',
  'tests/*.js'
],

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM