簡體   English   中英

如何在Jasmine / Protractor中模擬angular.module('myModule',[])。value()

[英]How to mock angular.module('myModule', []).value() in Jasmine/Protractor

我正在嘗試使用Protractor的addMockModule()來模擬一個簡單的AngularJS模塊並覆蓋一個變量:

這是我的HTML:

<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>

這是我的控制器:

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

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

這是我的模塊:

var newModule = angular.module('myModule', []);
newModule.value('myValue', "oldValue");

這是我的Jasmine / Protractor代碼:

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");

    });

結果:

失敗:

1)/ AssetAllocation / Index中的端到端測試應通過模擬模塊覆蓋服務消息:預期'oldValue'為'newMockedValue'。

怎么了 ?

到目前為止我找到的所有示例都是覆蓋HTTP調用,但我想要的只是用一個簡單的變量來模擬一個非常簡單的模塊。 在Protractor中可以做到嗎?

根據Juliemr在這篇文章中的說法:

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

“在mockedModule中運行的代碼在與測試不同的上下文中運行。一個在瀏覽器中,一個在node.js進程中運行測試”

mockedValue聲明放在it()並啟用角度同步

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");

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM