【问题标题】:Unable to inject factory into test suite using Karma/Jasmine无法使用 Karma/Jasmine 将工厂注入测试套件
【发布时间】:2017-05-07 11:36:08
【问题描述】:

我有一个带有 Django 后端的 Angular 应用程序。我刚刚开始使用 Karma 和 Jasmine 单元测试。我无法将我的工厂注入我的测试套件。我有什么建议或明显的错误吗?

这是我的文件...

karma.conf.js 文件

module.exports = function(config) {
config.set({

basePath: '',

frameworks: ['jasmine'],

files: [
    './node_modules/angular/angular.js',                             
    './node_modules/angular-ui-router/release/angular-ui-router.js', 
    './node_modules/angular-mocks/angular-mocks.js', 
    './fake/path/fake/js/directory/src/modules.js',
    './fake/path/fake/js/directory/src/factories/projectinfostorage.js',
    './fake/path/fake/js/directory/src/factories/projectinfostorage.spec.js',
],

exclude: [
],

preprocessors: {
},

reporters: ['progress'],

port: 9876,

colors: true,

logLevel: config.LOG_INFO,

autoWatch: true,

browsers: ['Chrome'],

singleRun: false,

concurrency: Infinity
})
}

Angular 模块...

var app = angular.module("tablebrowser", ["ngRoute"]);

工厂...

app.factory('projectInfoStorage', function(){
    var factory = {};

    return factory;
})

工厂单元测试...

describe('projectInfoStorage factory', function() {
      var projectInfoStorage;

      beforeEach(angular.mock.module('tablebrowser'));

      beforeEach(inject(function(_projectInfoStorage_) {
          projectInfoStorage = _projectInfoStorage_;
      }));

      console.log(projectInfoStorage)
  });

Karma 在命令行中向我展示了这个...

Chrome 55.0.2883 (Mac OS X 10.10.5) LOG: undefined

Chrome 55.0.2883 (Mac OS X 10.10.5): Executed 0 of 0 SUCCEChrome 55.0.2883     (Mac OS X 10.10.5): Executed 0 of 0 ERROR (0 secs / 0 secs)

【问题讨论】:

    标签: angularjs django karma-jasmine


    【解决方案1】:

    您的测试不起作用的原因是您实际上没有测试任何东西。在该 describe 函数中,您需要将测试实际放入 it 函数中。如下所示:

    describe('projectInfoStorage factory', function() {
        var projectInfoStorage;
    
        beforeEach(angular.mock.module('tablebrowser'));
    
        beforeEach(inject(function(_projectInfoStorage_) {
            projectInfoStorage = _projectInfoStorage_;
        }));
    
        it('will test factory', function() {
            expect(true).toBeTruthy();
        }
    });
    

    你需要用这些来构建你的测试来测试一些东西。

    【讨论】:

    • beforeEach 在每次测试之前运行 - 你没有测试,所以 beforeEach 永远不会运行
    猜你喜欢
    • 2014-09-20
    • 2013-09-29
    • 2017-09-21
    • 2016-10-10
    • 1970-01-01
    • 2016-11-13
    • 2018-10-04
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多