0

ich einen Jasmin-Test über Winkel js lief, und ich bekomme den nächsten Fehler:Jasmin Fehler, wenn ich spritze eine Fabrik

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

Ich habe versucht, die Routen zu ändern, injizieren anderen Dienst, und es ist nicht zu Arbeits Ich lief anderen Fall wie

it("compara un valor con otro", function() { 
    var pi = 3.1415926, 
     e = 2.78; 

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

und das funktioniert gut.

Dies ist meine Testdatei

describe("test_servicioCalculadora", function() { 

    var calcu; 

    beforeEach(module('starter')); 

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

    })); 
}); 

mein index.js ist

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


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

mein 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

Sie injizieren ein Modul, das zu viele Abhängigkeiten aufweist, möglicherweise kann einer von ihnen nicht injizieren. Erstellen Sie ein sehr einfaches Modul ohne weitere Injektionen und verwenden Sie es in Ihrem Test, wenn es funktioniert dann ist eine der Abhängigkeiten das Problem. – Hosar

+0

Ich habe versucht, aber es funktioniert nicht –

+0

PhantomJS ist bekannt für Schluckfehler, die in beforeEach passieren. Ändern Sie es zum Debuggen in Chrome. – estus

Antwort

0

Sie versuchen, einen Wert zu injizieren. Sollte eine Dienstleistung oder eine Fabrik sein.
z.B.

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

Siehe das Beispiel zuerst das Modul, wo Sie einige Werte einstellen. Dann ist der Service oder die Fabrik am Ende der Test.
Dies bedeutet, dass der Wert von log auf service injiziert werden, wenn sie auf dem eigentlichen Test verwendet wird.
Hoffe, diese Hilfe zu klären.

Verwandte Themen