$ httpbackend中的Angular-Jasmine缺少范围响应匿名函数

时间:2016-09-08 15:44:19

标签: javascript angularjs jasmine protractor

我正在使用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都没有定义?如何正确地确定这些数据的范围,以便我可以将其作为响应的一部分返回?

1 个答案:

答案 0 :(得分:0)

问题可能是您需要将$ scope显式传递给控制器​​。尝试类似下面的代码:

beforeEach(
        inject(function (_$controller_, _$rootScope_) {
            myController = _$controller_('myControllerName', {
                $scope: _$rootScope_.$new()
            });
        })
    );