在Protractor中为ngMock httpBackend响应动态加载JSON

时间:2015-05-22 22:22:23

标签: angularjs protractor ngmock ngmocke2e

我正在量角器测试中构建一个ngMock httpBackend。

var mockJson = require(projectRoot + 'mock/load.json');

var mockResource = function() {
    angular.module('aMockObject', ['myApp', 'ngMockE2E'])
    .run(function($httpBackend) {
        $httpBackend.whenGET('a/path').respond(mockJson);
    });
};

需要从文件加载模拟响应的默认JSON对象。

但是,$ httpBackend代码实际上是在浏览器上下文中执行的,而不是Protractor脚本上下文,因此mockJson变量未定义。

有没有其他方法可以使这项工作?我能想到的只是某种注入的脚本标记,用于在浏览器上下文中加载json文件。

2 个答案:

答案 0 :(得分:2)

您可以使用addMockModule

在量角器和应用程序之间传递数据

<强> file.json

{
    some_property: 'value'
}

<强> aMockObject.js:

exports.module = function (data) {
    angular.module('aMockObject', ['myApp', 'ngMockE2E'])
    .run(function($httpBackend) {
        $httpBackend.whenGET('a/path').respond(data);
    });
};

初始化函数:

var aMockObject = require('aMockObject');    
var file = require('file.json');    
browser.addMockModule('aMockObject', aMockObject.module, file);

答案 1 :(得分:1)

好吧,直接加载json就可以了。

// Allow JSON
$httpBackend.whenGET(/.*\.json$/).passThrough();

$http.get('/path/to/file.json').success(function(json) {
  // other httpBackend code here
});