【问题标题】:How do I fix 404 warnings with Karma for my AngularJS project?如何使用 Karma 为我的 AngularJS 项目修复 404 警告?
【发布时间】:2014-03-18 18:01:48
【问题描述】:
Running "karma:unit" (karma) task
INFO [karma]: Karma v0.10.9 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.7 (Mac OS X)]: Connected on socket lJGhX9DakX2lChvLXtju
WARN [web-server]: 404: /lang/en-US.json
WARN [web-server]: 404: /api/v1/user/session
WARN [web-server]: 404: /api/v1/user/auth

这就是我得到的...我的karma.conf.js 有:

files: [
    'public/lib/angular/angular.js',
    'public/lib/angular-mocks/angular-mocks.js',
    'public/lib/angular-cookies/angular-cookies.js',
    'public/lib/angular-resource/angular-resource.js',
    'public/lib/angular-route/angular-route.js',
    'public/lib/angular-strap/dist/angular-strap.min.js',
    'public/lib/angular-animate/angular-animate.min.js',
    'public/lib/angular-bootstrap/ui-bootstrap-tpls.js',
    'public/lib/angular-bootstrap/ui-bootstrap.js',
    'public/lib/angular-translate/angular-translate.min.js',
    'public/lib/angular-translate-loader-static-files/angular-translate-loader-static-files.js',
    'public/lib/angular-translate-storage-cookie/angular-translate-storage-cookie.js',
    'public/js/**/*.js',
    'test/karma/unit/**/*.js',
    {pattern: 'public/lang/*.*', included: false, served: true}

],

所以这应该包含 lang 文件,但它没有。关于 api 调用,实际上并没有提供这些调用,但是我在我的应用程序初始化中进行了检查,以尝试查看用户是否经过身份验证。在我的测试文件中,我正在做:

$httpBackend.when('GET', '/api/v1/user/session').respond({status: 'ok'});

在我的beforeEach 中,但这并不能解决问题。想法?

【问题讨论】:

  • 我猜你必须为某些路径指定路由。看看 karma 中的代理:karma-runner.github.io/0.8/config/configuration-file.html
  • 需要更多细节。您正在执行 $http.GET 的基本代码和您的测试用例将有所帮助。您可以删除帖子中的实现,但截至目前,问题中的信息不足以回答

标签: angularjs karma-runner


【解决方案1】:

如果您想在单元测试中跳过应用的配置部分,则需要将应用拆分为多个模块。这样您就可以在不运行另一个模块的配置部分的情况下测试单个模块。

例如,如果您想在不运行应用的配置部分的情况下对指令进行单元测试,您可以这样做。

var myAppModule = angular.module('myApp', ['myAppDirectives']);

myAppModule.config() {
    //This code won't be run in your unit tests.
    ...
}

var myAppDirectivesModule = angular.module('myAppDirectives', []);

myAppDirectivesModule.directive(/*Define your directives on this module*/);

然后在您导入模块的单元测试中,您只能导入指令模块:

beforeEach(module('myAppDirectives'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2020-11-28
    相关资源
    最近更新 更多