2014-03-19 14 views
5

Ich benutze AngularJS mit Karma mit dem Jasmine-Framework. Ich habe mehrere andere Tests laufen und arbeiten. Mein Problem ist, wenn ich versuche, diese auszuführen:ReferenceError: spyOn ist nicht definiert Angularjs/Karma/Jasmine

spyOn(window, 'confirm').and.returnValue(true); 

ich diesen Fehler:

ReferenceError: spyOn is not defined 

Hier ist meine config:

module.exports = function() { 
    return { 
    basePath: '../', 
    frameworks: ['jasmine'], 
    reporters: ['progress'], 
    browsers: ['Chrome_without_security'], 
    autoWatch: true, 
    // these are default values anyway 
    singleRun: false, 
    colors: true, 
    plugins : [ 
      'karma-chrome-launcher', 
      'karma-jasmine', 
      'karma-ng-scenario' 
      ], 
    customLaunchers: { 
     Chrome_without_security: { 
     base: 'Chrome', 
     flags: ['--disable-web-security'] 
     } 
    }, 
    files : [ 
     'static/js/bower_components/angular/angular.js', 
     'static/js/app.js', 
     'static/js/controllers.js' 
    ] 
    } 
}; 

var sharedConfig = require('./karma-shared.conf'); 

module.exports = function(config) { 
    var conf = sharedConfig(); 

    conf.files = conf.files.concat([ 
    //test files 
    './tests/e2e/account/sign-up.js', 
    './tests/e2e/account/sign-in.js', 
    './tests/e2e/organization/*.js', 
    //'./tests/e2e/**/*.js', 
    './tests/e2e/account/sign-out.js' 
    ]); 

    conf.proxies = { 
    '/': 'http://localhost/' 
    }; 

    conf.urlRoot = '/__karma__/'; 

    conf.frameworks = ['ng-scenario']; 

    config.set(conf); 
}; 

Die Konfiguration besteht aus einem gemeinsamen und spezifischen Konfiguration für E2e-Tests.

Ich habe alles andere funktioniert und Jasmine wird als das Framework in meiner Karma-Konfiguration angegeben. Irgendwelche Ideen?

+1

ng-Szenario-Syntax ist Jasmins ähnlich, aber nicht identisch. Bist du sicher, dass Jasmine tatsächlich geladen ist? Versuchen Sie in einem Komponententest oder einem Integrationstest zu spionOn? –

+0

@chris Casper, keine Antwort? – Danger14

Antwort

0

Versuchen Sie dies in Ihrem Testskript:

describe('testing spy',function(){ 
    var window_confirmSpy; 

    beforeEach(function(){ 
    window_confirmSpy = spyOn(window, 'confirm').and.callThrough(); 
    }); 

    it('testing windows confirm method',function(){ 
    window.confirm(); 

    expect(window_confirmSpy).tohaveBeenCalled(); 
    }); 

    it('testing windows confirm method with parameter',function(){ 
    window.confirm('parameter'); 

    expect(window_confirmSpy).tohaveBeenCalledWith('parameter'); 
    }); 
}); 

Above-Code-Snippet wird sichergestellt, dass window.confirm() aufgerufen wird oder nicht.

Verwandte Themen