【问题标题】:How to mock the requests made by ngResource in Angular JS如何在 Angular JS 中模拟 ngResource 发出的请求
【发布时间】:2013-12-12 16:51:45
【问题描述】:

我正在尝试开始为我的 Angular 应用程序编写单元测试并很快遇到了一个停止块,因为我不确定如何以可测试的方式准确地模拟我的服务。 我的服务如下: var services = angular.module('myApp', ['ngResource']);

 services.factory('LogonFactory', function ($resource, $http) {
        return $resource('/servicemen/logon/', {}, {
            login: {
                method: 'POST'
            }
       })
  });

到目前为止,我的测试包括:

describe('Logon', function () {
    var mockUserResource, $httpBackend;
    beforeEach(angular.mock.module('myApp'));

    beforeEach(function () {
        angular.mock.inject(function ($injector) {
            $httpBackend = $injector.get('$httpBackend');
            mockLoginResource = $injector.get('login');
        })
    });

    describe('login', function () {
        it('should call login function', inject(function (User) {
            $httpBackend.expectGET('/servicemen/logon/')
                .respond([{
                username: 'test'
            }]);

            var result = mockLoginResource.login();
            $httpBackend.flush();
            expect(result[0].username).toEqual('test');
        }));

    });
});

我也收到错误 No flush !!! 提前致谢。

【问题讨论】:

    标签: mocking jasmine ngresource


    【解决方案1】:

    考虑将第 8 行更改为 mockLoginResource = $injector.get('LogonFactory');

    【讨论】:

      猜你喜欢
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 2015-05-10
      • 2014-02-19
      相关资源
      最近更新 更多