2014-07-02 18 views
5

Basit angularjs modülü alay etmek iletki en addMockModule() kullanın ve bir değişken geçersiz kılmak için çalışıyorum.Yasemin/İletki içinde angular.module ('MyModule', []) değeri() alay nasıl

İşte

<body ng-app="myApp"> 
    <div ng-controller="myAppController">  
     Overriden module value <b>{{myValue}}</b> 
    </div> 

    <script src="/Scripts/Lib/angular/angular.js"></script> 
    <script src="/module.js"></script> 
    <script src="/controller.js"></script> 
</body> 

benim Denetleyicisi'dir: İşte benim HTML

: Burada

var myApp = angular.module("myApp", ['myModule']); 

myApp.controller("myAppController", function ($scope, myValue) { 
    $scope.myValue = myValue; 
}); 

benim Modülü olduğunu

var mockMyModule = function() { 
     var newModule = angular.module('myModule', []); 
     newModule.value('myValue', "newMockedValue"); 
    }; 

    it('should override services via mock modules', function() { 

     ptor = protractor.getInstance(); 
     ptor.ignoreSynchronization = true; 
     browser.addMockModule('portfolioDataAccessMod', mockMyModule); 
     browser.get('http://localhost:57627/page1.html'); 

     expect(element(by.binding("myValue")).getText()).toBe("newMockedValue"); 

    }); 

Sonuçlar::

Hataları: 0

İşte benim Yasemin/Açıölçer kodudur

hizmetlerini geçersiz olmalıdır/AssetAllocation/Endeksinde

1) Uçtan uca test sahte modüller üzerinden İleti: 'newMockedValue' olmak için 'oldValue' bekleniyor.

Sorun nedir?

Şimdiye kadar bulduğum tüm örnekler, HTTP çağrılarını geçersiz kılacak, ancak tek istediğim basit bir değişkenle çok basit bir modül oluşturmaktır. İletki içinde yapmak mümkün mü? Bu görevde Juliemr göre

+0

sağlar. –

cevap

7

.

https://github.com/angular/protractor/issues/509

"mockedModule çalıştırıldığında kod testinden ayrı bağlamında çalıştırılır biri biridir, tarayıcıda olup node.js içinde süreç testi "mockedValueinside

koyun beyanı çalışanve bu arkasındaki fikir canlı ortam için sabitleri var ve sadece iletki testi için bunları değiştirmektir açısal senkronizasyon

it('should override services via mock modules', function() { 
    ptor = protractor.getInstance(); 

    // When ignoreSynchronization is true mocking doesn't work 
    ptor.ignoreSynchronization = false; 

    browser.addMockModule('myModule', function() { 
     var module = angular.module('myModule').config(['$provide', function ($provide) { 
      $provide.constant('myValue', 'newMockedValue'); 
     }]) 
    }); 

    browser.get('http://localhost:57627/page1.html'); 
    expect(element(by.binding("myValue")).getText()).toBe("newMockedValue"); 

}); 
+0

Çalışmıyor olması normal. Ptor.ignoreSynchronization = true ile; açısal bir sayfayı test etmediğinizi belirtiyorsunuz. Yani alay etmeye gerek yok. – Mischa

+0

ignoreSynchronization özniteliği hakkında daha fazla bilgiyi burada bulabilirsiniz: http://stackoverflow.com/questions/28808463/what-is-browser-ignoresynchronization-in-protractor –