注入工厂

时间:2016-11-21 19:46:58

标签: javascript angularjs ionic-framework jasmine karma-jasmine

我对角度js进行了茉莉花测试,我得到了下一个错误:

  

PhantomJS 2.1.1(Linux 0.0.0)test_servicioCalculadora应该提供   版本失败           /home/ivan/workspace/mobile.trackphone/www/lib/ionic/js/ionic.bundle.js:13218:53           forEach@/home/ivan/workspace/mobile.trackphone/www/lib/ionic/js/ionic.bundle.js:9168:24           loadModules@/home/ivan/workspace/mobile.trackphone/www/lib/ionic/js/ionic.bundle.js:13178:12           createInjector@/home/ivan/workspace/mobile.trackphone/www/lib/ionic/js/ionic.bundle.js:13104:22           workFn@/home/ivan/workspace/mobile.trackphone/www/lib/angular-mocks/angular-mocks.js:3074:60           加载@ http://localhost:9876/context.js:151:17

我试图改变路线,注入其他服务,但它也没有用 我跑了像

这样的其他案例
it("compara un valor con otro", function () {
    var pi = 3.1415926,
      e = 2.78;

    expect(e).toBeLessThan(pi);
    expect(pi).not.toBeLessThan(e);
  });

这很好。

这是我的测试文件

describe("test_servicioCalculadora", function () {

  var calcu;

  beforeEach(module('starter'));

  it('should provide a version', inject(function(version) {
    expect(version).toEqual('v1');

  }));
});

我的index.js是

var app = angular.module('starter', ['ionic', 'LocalStorageModule',      'btford.socket-io', 'angularMoment', 'ngCordova', 'ngAudio']);


app.value('version', 'v1');

我的karma.config.js

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [

      '../www/lib/ionic/js/ionic.bundle.js',
      '../www/lib/angular-mocks/angular-mocks.js', 
      '../www/js/index.js',
      '../tests/**/*-test.js' 
    ],
    exclude: [
    ],
    preprocessors: {
    },
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_ERROR,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false,
    concurrency: Infinity
  })
};

1 个答案:

答案 0 :(得分:0)

您正在尝试注入一个值。应该是服务还是工厂。
例如

beforeEach(module('some.service', function($provide){
            var log = {
                info: function(data){
                    console.log(data);
                }
            }
            $provide.value('$log', log);
});
beforeEach(inject(function(_serviceName_){
  serviceName = _serviceName_;
}));

it("Actual test", function(){
   serviceName.performAction();
});

参见示例,首先是可以设置某些值的模块。然后是测试结束时的服务或工厂。
这意味着当在实际测试中使用 serviceName 时, log 的值将被注入。
希望这有助于澄清。