我正在使用Protractor for和Angular app编写一些端到端测试。我目前正在尝试使用angular-mock来模拟一些http响应,并且遇到了我不明白的范围问题。
var protractor = require('protractor');
var ngMockE2E = require('ng-mock-e2e');
var testData = require('./e2e-data.json');
describe('DataEater', function() {
var $httpBackend = ngMockE2E.$httpBackend;
var appUrl = browser.baseUrl + 'scheduler/data-eater/';
var self = this;
self.testData2 = require('./e2e-data.json');
beforeEach(function() {
browser.get(appUrl);
ngMockE2E.addMockModule();
ngMockE2E.addAsDependencyForModule('dataEater');
$httpBackend.when('GET', '/scheduler/tasks/queue/')
.respond(function(method, url, data) {
console.log(testData);
console.log(self.testData2);
return [200, self.testData.history, {}];
});
为什么testData或testData2都没有定义?如何正确地确定这些数据的范围,以便我可以将其作为响应的一部分返回?
答案 0 :(得分:0)
问题可能是您需要将$ scope显式传递给控制器。尝试类似下面的代码:
beforeEach(
inject(function (_$controller_, _$rootScope_) {
myController = _$controller_('myControllerName', {
$scope: _$rootScope_.$new()
});
})
);