2016-11-21 28 views
0

我跑過去角JS茉莉花測試,我也得到了一個錯誤:茉莉錯誤,當我注入廠

PhantomJS 2.1.1 (Linux 0.0.0) test_servicioCalculadora should provide a version FAILED /home/ivan/workspace/mobile.trackphone/www/lib/ionic/js/ionic.bundle.js:13218:53 [email protected]/home/ivan/workspace/mobile.trackphone/www/lib/ionic/js/ionic.bundle.js:9168:24 [email protected]/home/ivan/workspace/mobile.trackphone/www/lib/ionic/js/ionic.bundle.js:13178:12 [email protected]/home/ivan/workspace/mobile.trackphone/www/lib/ionic/js/ionic.bundle.js:13104:22 [email protected]/home/ivan/workspace/mobile.trackphone/www/lib/angular-mocks/angular-mocks.js:3074:60 [email protected]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

您正在注入一個具有太多依賴性的模塊,可能其中一個模塊未能注入。創建一個沒有其他注入的非常簡單的模塊,並在測試中使用它,如果它有效,那麼其中一個依賴關係就是問題。 – Hosar

+0

我試過,但它不起作用 –

+0

PhantomJS以吞嚥beforeEach中發生的錯誤而聞名。將其更改爲Chrome以進行調試。 – estus

回答

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(); 
}); 

查看示例,首先是您可以設置某些值的模塊。然後是服務或工廠結束測試。
這意味着日誌的值將被注入服務名稱何時用於實際測試。
希望這個幫助來澄清。