为 Protractor 中的 ngMock httpBackend 响应动态加载 JSON
Dynamically load JSON for ngMock httpBackend response in Protractor
我正在 Protractor 测试中构建一个 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 文件。
好吧,直接加载 json 就可以了。
// Allow JSON
$httpBackend.whenGET(/.*\.json$/).passThrough();
$http.get('/path/to/file.json').success(function(json) {
// other httpBackend code here
});
您可以使用 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);
我正在 Protractor 测试中构建一个 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 文件。
好吧,直接加载 json 就可以了。
// Allow JSON
$httpBackend.whenGET(/.*\.json$/).passThrough();
$http.get('/path/to/file.json').success(function(json) {
// other httpBackend code here
});
您可以使用 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);