2016-04-01 16 views
1

Birim testlerim için jasmine ile açısal versiyon 1 kullanıyorum.Açısal tanımsız olup olmadığını görmek için nasıl birim testi yapabilirim?

yapmak istediğim testtir:

Ben indir son tarayıcısını söyleyerek html afiş yüklemek örneğin ie7 index.html sayfasını yüklediğinizde.

Ben şu anda dizin sayfasında JQuery kullanarak bir html şablonu yüklüyorum.

Bunu açısal uygulamanın dışından beri test etmek mümkün mü?

<!doctype html> 
    <head>  
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>  

     <base href="/app/" /> 

     <!-- Is Angular supported --> 
     <script> 
      if(window.angular === undefined)    
       $(function(){$("#angularNotSupportedModal").load("/app/noAngularModal.html");}); 
     </script> 

    </head> 
    <body ng-app="app" ng-cloak> 
     <div id="angularNotSupportedModal"></div>  

     <div ui-view></div> 

     <!-- Application --> 
     <script src="/scripts/app.js"></script> 

     <!-- Config --> 
     <script src="/scripts/config.js"></script> 
    </body> 
</html> 

Herhangi bir öneriniz çok iyi olurdu:

Bu benim index.html sayfasında benim şimdiki kodudur.

Teşekkür

cevap

0

görev sıkıcı ama mümkündür iyi eski jQuery test etmek daraltır. jQuery'un sadece kodlanabilmesi veya tamamen dizilmesi ve alay edilmesi durumunda bu koda bağlıdır.

Test edilen betik, test edilecek olan fonksiyonun düzgün bir şekilde ayrılması için izole edilmelidir. Böyle bir şey olabilir:

it('should call through $ chain', (done) => { 
    var angular = window.angular; 
    window.angular = undefined; 

    spyOn(jQuery.prototype, 'ready').and.callThrough(); 
    spyOn(jQuery.prototype, 'load').and.callThrough(); 

    // make spy not break the chain 
    var init = jQuery.prototype.init.bind(jQuery.prototype); 
    spyOn(jQuery.prototype, 'init').and.callFake(init); 

    window.runAngularNotSupportedFunction(); 

    expect(jQuery.prototype.ready).toHaveBeenCalledWith(jasmine.any(Function)); 
    expect(jQuery.prototype.init).toHaveBeenCalledWith('#angularNotSupportedModal', undefined); 
    expect(jQuery.prototype.load).toHaveBeenCalledWith('/app/noAngularModal.html'); 

    window.angular = angular; 
    jQuery.ready.promise().done(done) 
}) 
+0

Cant jQuery kodunu test etmek yolunu olduğunu çalışma – AngularM

+0

olsun. Ne yaptığınızı ve neden çalışmadığını belirtmediniz. – estus

+0

Kullandığınız jQuery değişkenini bulamamış mıyım? – AngularM