2

我正在量角器测试中构建一个 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 文件。

4

2 回答 2

2

您可以使用addMockModule在量角器和应用程序之间传递数据:

文件.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);
于 2015-05-27T05:28:53.213 回答
1

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

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

$http.get('/path/to/file.json').success(function(json) {
  // other httpBackend code here
});
于 2015-05-23T00:05:12.273 回答