我在服务中有一个名为getFrame的函数。该函数只返回$ http调用到控制器。
angular.module('app').factory('DemoFactory', function ($http) {
function getFrame(id) {
var url = 'http://localhost:8080/frames/' + id + '/';
return $http.get(url);
}
return {
getFrame: getFrame
};
});
现在我想编写单元测试,我正在做如下:
describe('Service: DemoFactory', function () {
// load the service's module
beforeEach(module('app'));
// Instantiate service
var $httpBackend,
DemoFactory;
beforeEach(inject(function (_$httpBackend_, _DemoFactory_) {
$httpBackend = _$httpBackend_;
DemoFactory = _DemoFactory_;
}));
it('should send proper http request from getFrame', function () {
$httpBackend.expectGET('http://localhost:8080/frames/1/').respond(200);
DemoFactory.getFrame(1);
$httpBackend.flush();
});
afterEach(function () {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
});
使用给定的服务,我的目标是测试getFrame是否正在发出正确的http请求。所以我觉得我在这里做得很好。但有些事情让我想知道它阻止了没有任何期望。所以我需要确认,对于我写的服务,我可以按照描述进行单元测试。我是否需要在单元测试中使用其他任何东西?或者我可以以其他方式进行其他操作吗?