Javascript 如何在服务调用http.get后测试作用域值
我试图编写一个单元测试来测试执行http.get的工厂,然后测试范围绑定 工厂在我的控制器内调用 这是一个plunker,显示了我的http.get: Ctrl: 测试: 对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
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));