Javascript 如何在服务调用http.get后测试作用域值

Javascript 如何在服务调用http.get后测试作用域值,javascript,angularjs,angularjs-scope,jasmine,karma-jasmine,Javascript,Angularjs,Angularjs Scope,Jasmine,Karma Jasmine,我试图编写一个单元测试来测试执行http.get的工厂,然后测试范围绑定 工厂在我的控制器内调用 这是一个plunker,显示了我的http.get: Ctrl: 测试: 对http.get的测试似乎还可以,但是当我尝试记录响应(数据)时,出现了一个错误 更新: 当我尝试通过以下方式记录呼叫时: console.log(httpMock.expectGET("data.json?").respond(data)); 显示未定义。@DoctorMick-我收到以下消息:ReferenceErro

我试图编写一个单元测试来测试执行http.get的工厂,然后测试范围绑定

工厂在我的控制器内调用

这是一个plunker,显示了我的http.get:

Ctrl:

测试:

对http.get的测试似乎还可以,但是当我尝试记录响应(数据)时,出现了一个错误

更新:

当我尝试通过以下方式记录呼叫时:

console.log(httpMock.expectGET("data.json?").respond(data));

显示未定义。

@DoctorMick-我收到以下消息:ReferenceError:找不到变量:data。。。。我希望数据是获取JSON的服务调用的结果。据我所知,您告诉httpMock在发出请求时返回一个数据结果,但您的测试中没有定义任何数据(我可以看到)。尝试在httpMock.expectGet之前添加var data={bananas:'are yellow'}。@DoctorMick-尝试了上述方法,在httpMock和console.log之前添加对象{bananas:'are yellow'}。。。那么,我怎样才能让数据成为JSON内容呢?你真的需要它吗?在您的测试中,我想您要做的就是确保在范围上正确设置值?如果是这样,您不需要实际的json,只需要使用一个空结构,您可以将作用域值与之进行比较。@DoctorMick-ah好的,这很有意义。也可以用类似的东西。
describe('with httpBackend', function () {
    var app;
    beforeEach(function () {
        app = angular.mock.module('plunker')
    });

    describe('MyCtrl', function () {
        var scope, ctrl, theService, httpMock;

        beforeEach(inject(function ($controller, $rootScope, factoryGetJSONFile, $httpBackend) {
            httpMock = $httpBackend;
            scope = $rootScope.$new();
            ctrl = $controller('MyCtrl', {
                $scope: scope,
                factoryGetJSONFile: factoryGetJSONFile,
                $httpBackend: httpMock
            });
        }));

        it("should make a GET call to data.json", function () {
            console.log("********** SERVICE ***********");
            httpMock.expectGET("data.json?").respond(data);

            console.log(data.Addresses);
            console.log(data.Names);
            console.log(data.Country);
            //expect(factoryGetJSONFile.getMyData()).toBeDefined();
            httpMock.flush();
        });
    })
});
console.log(httpMock.expectGET("data.json?").respond(data));