如何嘲笑angular.module(“MyModule的”,[])。在茉莉花/量角器值() [英] How to mock angular.module('myModule', []).value() in Jasmine/Protractor
问题描述
我试图用量角器的addMockModule()来模拟一个简单的AngularJS模块并重写一个变量:
I'm trying to use Protractor's addMockModule() to mock a simple AngularJS module and override a variable:
下面是我的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");
下面是我的茉莉花/量角器code:
Here is my Jasmine/Protractor code:
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 /索引应该重写
通过模拟模块的信息服务:
预计属性oldValue'是'newMockedValue。
1) End-to-end test in /AssetAllocation/Index should override services via mock modules Message: Expected 'oldValue' to be 'newMockedValue'.
什么是错的?
到目前为止,我发现所有样本都重写HTTP调用,但我想要的是模拟一个非常简单的模块,一个简单的变量。是否有可能在量角器办?
All samples I have found so far are to override HTTP calls, but all I want is to mock a very simple module with a simple variable. Is it possible to do in Protractor ?
推荐答案
据Juliemr在这个岗位:
According to Juliemr in this post:
https://github.com/angular/protractor/issues/509
,即在mockedModule运行code为在单独运行
背景从测试。一个是在浏览器,一个是在的node.js
流程运行测试
" the code that is run in the mockedModule is run in a separate context from the test. One is in the browser, one is in the node.js process running the test "
在
和禁用角同步 mockedValue
的将声明它()
Put declaration of mockedValue
inside it()
and disable angular synchronization
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");
});
这篇关于如何嘲笑angular.module(“MyModule的”,[])。在茉莉花/量角器值()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!